01 restful规范

1. 什么是restful规范

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

  • REST 与技术无关,代表的是一种软件架构风格,REST 是 Representational State Transfer 的简称,中文翻译为"表征状态转移"

  • REST 从资源的角度来审视整个网络,它将分布在网络中某个节点的资源通过 URL 进行标识,客户端应用通过 URL 来获取资源的表征,获得这些表征使这些应用转变状态

  • 所有的数据,不过是通过网络获取的还是操作(增删查改)的数据,都是资源,将一切数据视为资源是 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/
      # 读取资源时,传入标识符(identity),服务端返回标识符指定的单个资源对象
      {'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.lbzhk.com/api/user/2/
      # 返回一个204状态码和空响应体或者返回空
  9. .如果有异常返回错误信息

    • 示例:

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

    • 示例:

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

01 drf源码剖析之restful规范的更多相关文章

  1. drf源码剖析系列(系列目录)

    drf源码剖析系列(系列目录) 01 drf源码剖析之restful规范 02 drf源码剖析之快速了解drf 03 drf源码剖析之视图 04 drf源码剖析之版本 05 drf源码剖析之认证 06 ...

  2. 02 drf源码剖析之快速了解drf

    02 drf源码剖析之快速了解drf 目录 02 drf源码剖析之快速了解drf 1. 什么是drf 2. 安装 3. 使用 3. DRF的应用场景 1. 什么是drf drf是一个基于django开 ...

  3. Django框架(十八)—— CBV源码分析、restful规范、restframework框架

    目录 CBV源码分析.restful规范.restframework框架 一.CBV源码分析 1.url层的使用CBV 2.as_view方法 3.view方法 4.dispatch方法(可以在视图层 ...

  4. 07 drf源码剖析之节流

    07 drf源码剖析之节流 目录 07 drf源码剖析之节流 1. 节流简述 2. 节流使用 3. 源码剖析 总结: 1. 节流简述 节流类似于权限,它确定是否应授权请求.节流指示临时状态,并用于控制 ...

  5. 06 drf源码剖析之权限

    06 drf源码剖析之权限 目录 06 drf源码剖析之权限 1. 权限简述 2. 权限使用 3.源码剖析 4. 总结 1. 权限简述 权限与身份验证和限制一起,决定了是否应授予请求访问权限. 权限检 ...

  6. 05 drf源码剖析之认证

    05 drf源码剖析之认证 目录 05 drf源码剖析之认证 1. 认证简述 2. 认证的使用 3. 源码剖析 4. 总结 1. 认证简述 当我们通过Web浏览器与API进行交互时,我们可以登录,然后 ...

  7. 04 drf源码剖析之版本

    04 drf源码剖析之版本 目录 04 drf源码剖析之版本 1. 版本简述 2. 版本使用 3.源码剖析 4. 总结 1. 版本简述 API版本控制使您可以更改不同客户端之间的行为.REST框架提供 ...

  8. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  9. Django框架(十七)-- CBV源码分析、restful规范、restframework框架

    一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view) 2.as_view方法 as_view是 ...

随机推荐

  1. AJAX的GET请求、POST请求

    感谢:链接(视频讲解很详细) AJAX(Asynchronous Javascript and XML):异步的JavaScript和XML(不需要刷新网页就可以更新网页数据) XML:百度百科 是一 ...

  2. matlab之指派问题(整数规划)

    1 c=[ ; ; ; ]; c=c(:);%将矩阵C按列拉直,然后赋给C,例如矩阵C=[,,;,,],操作完后就是列向量1,,,,, a=zeros(,); for i=: a(i,(i-)*+:* ...

  3. Android学习笔记ActionView

    概念 案例 1.布局文件 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  4. Dubbo——SPI及自适应扩展原理

    文章目录 引言 正文 一.什么是SPI? 1. Java SPI的实现 2. Dubbo SPI实现原理 由配置文件得到的猜想 SPI源码 二.自适应扩展机制 三.Dubbo IOC 总结 引言 Du ...

  5. JAVA设计模式 1 设计模式介绍、单例模式的理解与使用

    数据结构我们已经学了一部分了.是该了解了解设计模式了.习惯了CRUD的你,也该了解了解这一门神器.我为啥要说是神器呢? 因为在大厂的面试环节.以及很多的比如 Springboot Mybatis 等开 ...

  6. 谷歌Chrome成最受欢迎的浏览器 它为啥好用?

    毫无疑问,在搜索引擎领域,谷歌是绝对的主导者.但是,一般人却很容易低估我们受到的“控制”.比如,它的浏览器Chrome. 在不到九年的时间,谷歌Chrome浏览器已经成为全球使用最多的网页浏览器.目前 ...

  7. Beta阶段代码与规范

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 团队进行Beta冲刺--代码规范与计划 作业正文 如下 其他参考文献 ... ...

  8. mac下创建安卓应用 hello-world

    教程 https://www.jianshu.com/p/bf77cb5ce70b 需要注意的地方 jdk目录查找 jdk目录拷贝到tool目录下面(jdk可以拷贝,没有其他牵扯) https://w ...

  9. 博弈论Nim取子问题,困扰千年的问题一行代码解决

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法与数据结构专题26篇文章,我们来看看一个新的博弈论模型--Nim取子问题. 这个博弈问题非常古老,延续长度千年之久,一直到20世纪 ...

  10. Install fail! Error: EBUSY: resource busy or locked, rename

    https://stackoverflow.com/questions/36566236/npm-install-error-code-ebusy-errono-4082 关闭项目所在的文件夹,cmd ...