RESTful架构解读

什么是REST

  • REST与技术无关,代表的是一种软件架构风格.REST全称是Representational State Tranfer, 表征性状态转移.
  • REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用的转变装态
  • 所有的数据,不管是通过网络获取还是增删改查的数据都是资源, 将一切数据视为资源是REST区别其他架构风格的最本质属性
  • 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)

RESTful API设计规范

  • API与用户的通信协议,总是使用HTTPS协议

  • 域名

  • 版本

  • method

    • GET :从服务器取出资源(一项或多项)

      • 安全且幂等
      • 获取表示
      • 变更时获取表示(缓存)

      • 200(OK) - 表示已在响应中发出

      • 204(无内容) - 资源有空表示
      • 301(Moved Permanently) - 资源的URI已被更新
      • 303(See Other) - 其他(如,负载均衡)
      • 304(not modified)- 资源未更改(缓存)
      • 400 (bad request)- 指代坏请求(如,参数错误)
      • 404 (not found)- 资源不存在
      • 406 (not acceptable)- 服务端不支持所需表示
      • 500 (internal server error)- 通用错误响应
      • 503 (Service Unavailable)- 服务端当前无法处理请求

    • POST :在服务器新建一个资源

      • 不安全且不幂等
      • 使用服务端管理的(自动产生)的实例号创建资源
      • 创建子资源
      • 部分更新资源
      • 如果没有被修改,则不过更新资源(乐观锁)

      • 200(OK)- 如果现有资源已被更改

      • 201(created)- 如果新资源被创建
      • 202(accepted)- 已接受处理请求但尚未完成(异步处理)
      • 301(Moved Permanently)- 资源的URI被更新
      • 303(See Other)- 其他(如,负载均衡)
      • 400(bad request)- 指代坏请求
      • 404 (not found)- 资源不存在
      • 406 (not acceptable)- 服务端不支持所需表示
      • 409 (conflict)- 通用冲突
      • 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
      • 415 (unsupported media type)- 接受到的表示不受支持
      • 500 (internal server error)- 通用错误响应
      • 503 (Service Unavailable)- 服务当前无法处理请求

    • PUT :在服务器更新资源(客户端提供改变后的完整资源)

      • 不安全但幂等
      • 用客户端管理的实例号创建一个资源
      • 通过替换的方式更新资源
      • 如果未被修改,则更新资源(乐观锁)

      • 200 (OK)- 如果已存在资源被更改

      • 201 (created)- 如果新资源被创建
      • 301(Moved Permanently)- 资源的URI已更改
      • 303 (See Other)- 其他(如,负载均衡)
      • 400 (bad request)- 指代坏请求
      • 404 (not found)- 资源不存在
      • 406 (not acceptable)- 服务端不支持所需表示
      • 409 (conflict)- 通用冲突
      • 412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
      • 415 (unsupported media type)- 接受到的表示不受支持
      • 500 (internal server error)- 通用错误响应
      • 503 (Service Unavailable)- 服务当前无法处理请求

    • PATCH :在服务器更新资源(客户端提供改变的属性)

    • DELETE :从服务器删除资源

      • 不安全但幂等
      • 删除资源

      • 200 (OK)- 资源已被删除

      • 301 (Moved Permanently)- 资源的URI已更改
      • 303 (See Other)- 其他,如负载均衡
      • 400 (bad request)- 指代坏请求
      • 404 (not found)- 资源不存在
      • 409 (conflict)- 通用冲突
      • 500 (internal server error)- 通用错误响应
      • 503 (Service Unavailable)- 服务端当前无法处理请求

  • 路径,一切都是资源, 均用名词表示(可以复数)

  • 过滤, 通过在url上传参的形式传递搜索条件

POST和PUT用于创建资源时有什么区别?

状态码

  • 1 开头: 服务器正在处理

  • 2 开头: 服务器处理成功

  • 3 开头: 重定向

  • 4 开头: 客户端错误

  • 5开头 : 服务器错误

    在返回的数据中携带状态码

URl设计上的技巧

  • 使用 _或者 -让URL可读性更好

  • 使用/表示资源层级关系

  • 使用?过滤资源

  • 使用,或者;表示同级资源关系

    GitHub使用来表示同级关系

基于Django实现

路由
urlpatterns = [
    url(r'^users/$', views.Users.as_view()),
    url(r'^users2/$', views.user2),
]
视图
import json

def  user2(request):
    if request.method=='GET':
        dic = {'status':200,'name': 'lqz2', 'age': 18}
        return HttpResponse(json.dumps(dic))
    elif request.method=='POST':
        dic = {'status': 200, 'msg': '修改成功'}
        return JsonResponse(dic)

class Users(View):
    def get(self, request):
        dic = {'status':200,'name': 'lqz', 'age': 18}
        return HttpResponse(json.dumps(dic))

    def post(self, request):
        dic = {'status': 200, 'msg': '修改成功'}
        return JsonResponse(dic)

转载于:https://www.cnblogs.com/kp1995/p/10594755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值