一、什么是REST

REST:Representational State Transfer(表征)性状态转移。
全称是 Resource Representational StateREST:是一组架构约束条件和原则,REST是Roy Thomas Fielding在他2000年的博士论文中提出的。REST就是用URL定位资源,用HTTP描述操作,利用client/server model对资源进行CRUD(Create/Read/Update/Delete)增删改查操作。Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
Representational:某种表现形式,比如用JSON,XML,JPEG等;
Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:
State Transfer:状态变化。通过HTTP动词实现。
  • 资源(Resources)

    “资源”是REST架构或者说整个网络处理的核心。
    "表现层"其实指的是"资源"(Resources)的"表现层"。所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
    它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。
    你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。
    要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。
    
  • 表现层(Representation)

    "资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。比如用JSON,XML,txt,HTML,JPG,PNGJPEG等URI只代表资源的实体,不代表它的形式。
    严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,
    而URI应该只代表"资源"的位置。
    它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
    
  • 状态转化(State Transfer)

    访问一个网站,就代表了客户端和服务器的一个互动过程。
    在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。
    因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。
    而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。客户端用到的手段,只能是HTTP协议:GET,POST,PUT,DELETE
    

二、RESTful

1.概念

如果一个架构符合REST原则,就称它为RESTful架构,是一种软件架构风格。(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

2.RestFul API接口设计风格介绍

统一接口设计风格:1.URL地址尽量使用名词,不要出现动词2.使用不同的请求方式,代表要执行不同的操作(GET)获取 POST(新增) PUT(修改)DELETE(删除)不常用:PATCH(修改) HEAD(只返回请求头没有请求体) OPTIONS(获取信息)3.访问URL地址时,如果有一些过滤的参数,参数可以放到查询字符串中4.响应数据:GET /books/:返回所有的图书数据GET /books/1/:返回id为1的图书数据POST /books/:将新增的图书数据返回PUT /books/1/:将修改的图书数据返回DELETE /books/1:返回空文档获取|修改:200新增:201删除:204参数有误:400服务器出错:5005.响应数据的格式:json了解:1.域名:使用专有域名2.版本:将版本信息放在url地址3.错误:将错误信息返回4.在访问api接口时,将和接口相关的其他API接口的地址也在响应数据中返回
eg:
GET :  查询    ----》   http://127.0.0.1:8000/user/all/   GETGET  http://127.0.0.1:8000/user/user/2/  查询2号用户
POST : 新增    ---->  POST  http://127.0.0.1:8000/users/user/    要增加一个用户到数据库中
PUT :  修改    ---->  PUT   http://127.0.0.1:8000/user/user/2/   要修改指定的用户
DELETE : 删除  ---》 DELETE   http://127.0.0.1:8000/user/user/2/  删除用户过滤,通过在url上传参的形式传递搜索条件
https://api.example.com/v1/zoos?limit=10:指定返回记录的数量
https://api.example.com/v1/zoos?offset=10:指定返回记录的开始位置
https://api.example.com/v1/zoos?page=2&per_page=100:指定第几页,以及每页的记录数
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序
https://api.example.com/v1/zoos?animal_type_id=1:指定筛选条件status:
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

3.首先为什么要用RESTful结构呢?

大家都知道"古代"网页是前端后端融在一起的,比如之前的PHP,JSP等。
在之前的桌面时代问题不大,但是近年来移动互联网的发展,各种类型的Client层出不穷,
RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。
另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。

4.特点

a.基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。
b.无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。
c.URL中通常不出现动词,只有名词
d.URL语义清晰、明确使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查
e.使用JSON不使用XML

5.其他名词解释

  • API(Application Programming Interface,应用程序编程接口)

    形象一点说就是像一个公司比如腾讯,阿里巴巴之类,他们可以提供一个API,然后我们或者一些其他的小公司可以编一个软件去跟这个接口(API)进行相连或交互。举个例子,比如你可以用手机的其他软件分享内容到微信朋友圈或者新浪微博,这些软件就是与微信和微博的api进行了交互。常用api接口汇总:https://www.cnblogs.com/zhangxiaoyong/p/8205024.html
    
  • Web:分布式信息系统为超文本文件和其他对象(资源)提供访问入口

    资源是Web架构的关键点,需要 3个操作 识别(identify) 表示(represent) 交互(interact with),通过这三个操作,又引出三个概念uri(统一资源标识符包括url和urn)识别资源;representation (例如html,xml,图片,视频等等)表示资源;通过协议(包括http,ftp等等)与资源进行交互。
    

Django Rest_framework 1(RESTRESTful)相关推荐

  1. Django rest_framework 实用技巧

    前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...

  2. python django restful_详解Django rest_framework实现RESTful API

    一.什么是REST 面向资源是REST最明显的特征,资源是一种看待服务器的方式,将服务器看作是由很多离散的资源组成.每个资源是服务器上一个可命名的抽象概念.因为资源是一个抽象的概念,所以它不仅仅能代表 ...

  3. Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改

    Django rest_framework 后端接口开发 开发与用户相关的一组接口 Django DRF框架用起来还是有一些难度的,需要做的配置,需要导的包很多,所以需要多多练习才能掌握它的使用.此文 ...

  4. Django Rest_Framework(DRF)

    文章目录 一.主要内容 1.web开发模式 2.API接口 3.接口测试工具:Postman 4.序列化 5.Restful规范(重点) 6.Django Rest_Framework(drf) 7. ...

  5. Django rest_framework 认证源码流程

    一.请求到来后,都要先执行dispatch方法 dispatch根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的dispatch方法有很多的功能 def d ...

  6. python Django Rest_Framework框架 视图集与路由Routers详解(图文并茂版)

    视图集与路由Routers详解 视图集 ViewSet视图集 代码实现 GenericViewSet视图集 代码实现 ModelViewSet视图集 ReadOnlyModelViewSet视图集 路 ...

  7. Django Rest_framework 4(APIView、GenericAPIView、ViewSet)

    详解Django DRF框架中APIView.GenericAPIView.ViewSet区别 https://zhuanlan.zhihu.com/p/72527077 View->APIVi ...

  8. django rest_framework

    https://www.cnblogs.com/huchong/p/8450353.html 转载于:https://www.cnblogs.com/mylovelulu/p/10844856.htm ...

  9. Django Rest_framework 9(支付宝沙箱)

    支付宝沙箱: https://blog.csdn.net/weixin_44520739/article/details/89214609 支付宝支付: https://github.com/fzle ...

最新文章

  1. Linux中如何配置IP
  2. 25个Java机器学习工具库
  3. 5个在线代码编辑器,供云计算爱好者
  4. 网络运维现状及发展趋势分析
  5. 只安装python_pip 只能安装python库吗
  6. JSP的生命周期研究
  7. ZSKAME大白菜2013官网下载
  8. struts2中Action名称的搜索顺序
  9. function与感叹号!
  10. VC++视频教程下载地址
  11. SparkSQL报错:UnresolvedException: Invalid call to dataType on unresolved object, tree: 'bb
  12. asp.net gridview 模板列 弹出窗口编辑_【线上课堂】中国(辽宁)国际贸易单一窗口企业资质系统业务操作...
  13. Tensorflow(r1.4)API--tf.summary.scalar
  14. 从婵媛的围脖上看到做产品的三个矛盾,思考ing......
  15. Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期
  16. python 倒计时功能怎么用print实现_在python中的print语句中实现60秒倒计时
  17. 硅谷女孩火了,更该让他们开始学编程 1
  18. 360怎样修改wifi服务器地址,360安全路由器IP地址设置的具体操作方法介绍
  19. 2022美国科学院院士名单公布:图灵奖得主、龙书作者Alfred V. Aho当选!
  20. Hadoop 安装指南

热门文章

  1. CSS系列之浮动详解
  2. 1人民币试用世纪互联azure虚拟机,跑CNN训练
  3. ios直播开发基础,推流协议及流程
  4. OpenCV:图片文字分割
  5. 英语和汉语的区别10大区别点
  6. Grassmann流形 — 用于子空间比较【理论】
  7. Android:空气质量检测界面(布局嵌套),练手推荐。
  8. win10系统快速进入bios的设置方法
  9. 八年级作文-断了的弦
  10. 2.3、Segment Routing基础之IGP Segment 类型详解