关于RESTframework

什么是RESTful

RESTful是一种开发理念,一种“风格”,一种规范,REST是Roy Thomas Fileding在他博文提出的.REST特点;url简洁,将参数通过url传递到服务器,简单就是说URL定位资源,用HTTP动词描述操作

RESTful架构

1,每一个URL代表一种资源;
2,客户端和服务器之间,传递这种资源的某种表现层;
3,客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
4,URL节后不能含有动词
5,一般接口返回的是JSON和XML类型的,JSON一般用的多
6,定义接口统一,使用起来比较方便

RESTful设计方法

API接口应该部署到专用的域名下,如果API不需要扩展,可以放到主域名下,API版本号放到URL中或者放到请求头信息中,路径就是表示API的具体网站,每个网站都有对应的资源,API中的名词应该使用复数

常见的HTTP的动词

GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
DELETE(DELETE):从服务器删除资源

不常见的HTTP动词

PATCH(UPDATE):在服务器更新(更新)资源(客户端提供改变的属性)。
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

常见状态码

'''1. 2XX请求成功'''
# 200 请求成功,⼀般⽤于GET与POST请求 ********
# 201 Created - [POST/PUT/PATCH]:⽤户新建或修改数据成功。
# 202 Accepted - [*]:表示⼀个请求已经进⼊后台排队(异步任务)
# 204 NO CONTENT - [DELETE]:⽤户删除数据成功。
'''2. 3XX重定向'''
# 301 NO CONTENT - 永久重定向 ********
# 302 NO CONTENT - 临时重定向 ********
'''3. 4XX客户端错误'''
# 400 INVALID REQUEST - [POST/PUT/PATCH]:⽤户发出的请求有错误。 ********
# 401 Unauthorized - [*]:表示⽤户没有权限(令牌、⽤户名、密码错误)。 ********
# 403 Forbidden - [*] 表示⽤户得到授权(与401错误相对),但是访问是被禁⽌的。 
********
# 404 NOT FOUND - [*]:⽤户发出的请求针对的是不存在的记录,url不存在,页面不存在。
# 405 请求⽅式不正 ********
# 406 Not Acceptable - [GET]:⽤户请求的格式不可得(⽐如⽤户请求JSON格式,但是只有XML格
式)。
# 410 Gone -[GET]:⽤户请求的资源被永久删除,且不会再得到的。
# 422 Unprocesable entity - [POST/PUT/PATCH] 当创建⼀个对象时,发⽣⼀个验证错误。
'''4. 5XX服务端错误'''
# 500 INTERNAL SERVER ERROR - [*]:服务器内部错误,⽆法完成请求 ********
# 501 Not Implemented 服务器不⽀持请求的功能,⽆法完成请求
更多状态码参考:https://www.runoob.com/http/http-status-codes.html

字面理解仅从字面意思理解的话,Django和framework指的是Django,框架。那REST呢?
REST是Representational State Transfer的简称,中文翻译为“表现层状态转化”,REST与技术无关,代表的是一种软件架构风格,遵循REST的架构风格,称为RESTful。
现在我们来到了RESTful,RESTful是什么呢?RESTful有一些显著特点
1,
    restful规范:API与用户的通信协议,那么必须是https协议

      在url中体现版本共存(旧版本和新版本都能体现出)

    路径,视网络上任何东西都是资源,均使用名词表示(可复数)

2,资源:首先需要注意的是,REST的名称"表现层状态转化"中,省略了主语,主语就是资源(Resources),资源是网络上的一个实体,或者说是网络上的一个具体信息,可以是文本、图片、音视频等。RESTful 架构风格的服务是围绕资源展开的,是典型的ROA(面向资源架构)。

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

4, 特点:URI(统一资源定位符)
可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。
一般的,每个资源至少有一个URI与之对应,最典型的URI即URL。

5,特点:路径(Endpoint)
资源作为网址,只能有名词,不能有动词,而且所用的名词往往与数据库的表名对应。

不好的例子:
getProducts (获取所有商品)listOrders( 查询列举所有订单)


对于一个简洁结构,你应该始终用名词, 如果某些动作是HTTP动词表示不了的,你就应该把动作做成一种资源。
API中的名词应该使用复数。无论子资源或者所有资源。

举例来说,获取产品的API可以这样定义 :
获取单个产品:http://127.0.0.1:8080/products/1

 获取所有产品: http://127.0.0.1:8080/products

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值