01 drf源码剖析之restful规范

01 restful规范

1. 什么是restful规范

  • restful是一套规则,是程序间进行数据传输的一种约定

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

2.restful规范详细

  1. 建议用https代替http

    • 为了保证数据的安全
  2. 在url中添加api标识

    • 这样看到url就知道是一个api,建议放在域名后面,这样不会存在跨域问题

    • 推荐下面写法,因为他不会存在跨域的问题

      http://www.lbzhk.com/api/....

      当然也可以这么写

      http://api.lbzhk.com/....
  3. 在接口中体现版本信息

    • 方便于版本的迭代,

    • 示例:

      http://www.lbzhk.com/api/v1....
    • 注意:版本还可以放在请求头中

      http://www.lbzhk.com/api/
      accept: ...
  4. 一般资源都用名词

    • restful也称面向资源编程,视网上的一切都是资源

    • 示例:

      http://www.lbzhk.com/api/user/
  5. 如果要添加一些筛选条件,可以写在url中

    • 示例:

      http://www.lbzhk.com/api/user/?page=1&type=9
  6. 根据method不同做不同的操作

    • get,获取数据
    • post,添加
    • put,更新
    • patch,局部更新
    • delete,删除
    • options,预检
  7. 返回给用户状态码

    • 200,成功
    • 300,301永久重定向/302临时重定向
    • 400,403拒绝访问/404找不到
    • 500,服务端代码错误
  8. 对不同请求返回不同的数据

    • 示例:

         GET http://www.lbzhk.com/api/user/
             [
                 {'id':1,'name':'张三','age':19},
                 {'id':1,'name':'李四','age':19},
             ]
         POST http://www.lbzhk.com/api/user/
             {'id':1,'name':'张三','age':19}
      
         GET http://www.lbzhk.com/api/user/2/
             {'id':2,'name':'张三','age':19}
      
         PUT http://www.lbzhk.com/api/user/2/
             {'id':2,'name':'张三','age':19}
      
         PATCH https//www.lbzhk.com/api/user/2/
             {'id':2,'name':'张三','age':19}
      
         DELETE https//www.luffycity.com/api/user/2/
             空
  9. .如果有异常返回错误信息

    • 示例:

      {
        error: "Invalid API key"
      }
  10. 对于下一个请求要返回一个接口

    • 示例:

      {
        'id':2,
        'name':'alex',
        'age':19,
        'depart': "http://www.luffycity.com/api/user/30/"
      }

猜你喜欢

转载自www.cnblogs.com/liubing8/p/11937969.html