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. IAT表

    0X0 0 DLL介绍 DLL翻译器为动态链接库,原来不存在DLL的概念只有,库的概念,编译器会把从库中获取的二进制代码插入到应用程序中.在现在windows操作系统使用了数量庞大的库函数(进程,内存 ...

  2. blob斑点检测

    目录 1. 可选算法 1.1. Laplacian of Gaussian (LoG) 1.2. Difference of Gaussian (DoG) 1.3. Determinant of He ...

  3. Python惯用法

    目录 1. 不要使用可变类型作为参数的默认值 1. 不要使用可变类型作为参数的默认值 摘自<流畅的Python>8.4.1 class HauntedBus: ""&q ...

  4. Fabric网络节点发现及成员管理

    一个新节点通过已知的节点加入到网络中,此时,它所知的网络节点信息是非常有限的,需要通过节点发现获知更多的节点,建立起足够的连接.另外,当一个新节点加入到网络时,原有网络节点也需要通过节点发现感知到新节 ...

  5. Flask Jinja2 知识点

    Jinja2模板引擎使用以下分隔符从HTML转义. {% ... %}用于语句 {{ ... }}用于表达式可以打印到模板输出 {# ... #}用于未包含在模板输出中的注释 # ... ##用于行语 ...

  6. nodejs 换源

    解决npm install安装慢的问题国外镜像会很慢 可用 get命令查看registry npm config get registry 原版结果为 http://registry.npmjs.or ...

  7. Navicat Premium 12安装激活教程_不需要激活工具直接激活

    问题场景:在使用注册机进行破解navicat的时候,在最后一步生成激活码的时候报错:Error on Decrypt Request Code…… 解决方案:1.先关闭Navicat2.Windows ...

  8. VScode快捷键集锦(持续更新)

    本文的快捷键是根据VScode for mac来的,Windows和Linux用户可能需要些许改动. 注释:cmd + /  注释当前选中的行,或者注释掉选中的行,再按一次反注释.还可以在按cmd + ...

  9. 数据库整理(三) SQL基础

    数据库整理(三) SQL基础 SQL语言的特点 集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体. 可以独立完成数据库生命周期中的全部活动: ​ ●定义和修改.删除关 ...

  10. SpringBoot 构建 Docker 镜像的 3 种方式

    本文将介绍3种技术,通过 Maven 把 SpringBoot 应用构建成 Docker 镜像. (1)使用 spring-boot-maven-plugin 内置的 build-image. (2) ...