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. DML_Data Modification_INSERT

    Data Modification (INSERT.DELETE.UPDATE.MERGE)之INSERT(基础知识,算是20年来第2次学习MSSQL吧,2005年折腾过一段时间的Oracle)INS ...

  2. SQL Beautifier & SQL2014自带的格式化工具

    格式化工具(希望有几款集成在IDE中的格式化工具)为什么要说明这些,不是为说明这个工具而发,看到那几千行或集成在一起的存储过程觉得乱七八的不爽,后面将会强力训练下自己. --下面这款SQL Beaut ...

  3. ojdbc6中OraclePreparedStatement的ArrayIndexOutOfBoundsException异常BUG-6396242

    现场信息 Caused by: java.lang.ArrayIndexOutOfBoundsException: -32203 at oracle.jdbc.driver.OraclePrepare ...

  4. 基于mykernel2.0编写一个操作系统内核

    基于mykernel2.0编写一个操作系统内核 一. 实验准备 详细要求 基于mykernel 2.0编写一个操作系统内核 按照https://github.com/mengning/mykernel ...

  5. controlfile的情景恢复

    控制文件测试 百度百科:控制文件(Control File)是Oracle的物理文件之一,它记录了数据库的名字.数据文件的位置等信息.控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机.如果没有数 ...

  6. JVM源码分析之Object.wait/notify(All)完全解读

    概述 本文其实一直都想写,因为各种原因一直拖着没写,直到开公众号的第一天,有朋友再次问到这个问题,这次让我静心下来准备写下这篇文章,本文有些东西是我自己的理解,比如为什么JDK一开始要这么设计,初衷是 ...

  7. < react router>: (路由)

    < react router> (路由): 思维导图: Atrial   文件夹下的index.js 文件内容: import React, { Component } from 'rea ...

  8. 小师妹学JVM之:java的字节码byte code简介

    目录 简介 Byte Code的作用 查看Byte Code字节码 java Byte Code是怎么工作的 总结 简介 Byte Code也叫做字节码,是连接java源代码和JVM的桥梁,源代码编译 ...

  9. Nginx基本知识,nginx安装使用方法

    Nginx 是一款高性能的Web服务器软件. - 具有极高的并发性能 - 利用Nginx与Tomcat组合使用, 搭建反向代理集群 - Nginx 反向代理集群可以解决网站的高并发问题! 1.安装 Y ...

  10. JDK8--08:Optional

    在程序运行时,空指针异常应该是最常见的异常之一,因此JDK8提供了Optional来避免空指针异常. 首先说明JDK8新增的Optional及相关方法的使用 Optional的常用操作: Option ...