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. 分享一个我自己做的 Excel 万年历

    下载链接在此. 纯 Excel 公式实现,带农历,可自定义节日.配色. 带有紧凑日历和记事日历两种日历,均可直接 Ctrl+P 打印,且打印时不带有顶部的控制栏.

  2. linux安装mysql使用yum安装

    安装MySQL 安装mysql客户端: yum install mysql 安装mysql 服务器端: yum install mysql-server 至此我就可以使用Yum简单地管理MySQL更新 ...

  3. Qt布局的简单介绍

    1  介绍 参考视频:https://www.bilibili.com/video/BV1XW411x7NU?p=25 布局的好处:布局之后,改变主窗口大小,其余窗口可以自适应. 2  布局分类 垂直 ...

  4. 【Spring】AOP的代理默认是Jdk还是Cglib?

    菜瓜:你觉得AOP是啥 水稻:我觉得吧,AOP是对OOP的补充.通常情况下,OOP代码专注功能的实现,所谓面向切面编程,大多数时候是对某一类对象的方法或者功能进行增强或者抽象 菜瓜:我看你这个理解就挺 ...

  5. DNS注册信息

    DNS注册信息查询可以查到注册时留下的信息,比如姓名,联系邮箱等等. 直接在命令行输入whois sina.com直接就可以看到sina.com的注册信息: Domain Name: SINA.COM ...

  6. JSP新闻显示

    MYSQL数据库创建新闻表,用户登陆时使用SERVLET获取用户名,效验通过后直接跳转新闻列表页面,JSP使用EL显示新闻列表 1.首先创建数据库及用户.新闻表 CREATE DATABASE /*! ...

  7. ES11来了,还学得动吗?

    写在前面 ES2020(即 ES11)上周(2020 年 6 月)已经正式发布,在此之前进入 Stage 4 的 10 项提案均已纳入规范,成为 JavaScript 语言的新特性 一.特性一览 ES ...

  8. SpringBoot 2.x添加Druid作为数据库连接池

    整合了一大堆ORM,是时候增加一个连接池了,此处选用了druid作为连接池,druid是alibaba开源平台上的一个数据库连接池实现,对比c3p0,dbcp加入了对数据库的监控,不知道甩出几条街的距 ...

  9. SpringBoot + MyBatis + MySQL 读写分离实战

    1. 引言 读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做.因此,一般来讲,读写分离有两种实现方式.第一种是依靠 ...

  10. SpringCloud项目配置加载顺序

    bootstrap.yml:位于jar包外的优先级最高 application.yml: 配置中心的文件 > JVM参数配置> 本地active指定文件 > 本地default文件, ...