什么是REST和RESTful API?

  REST:(英文:Representational State Transfer,简称REST)表征性状态转移,是一种软件架构风格。

  RESTful : RESTful API就是REST风格的API

restFul规范:
  1、建议使用https作为网络通信协议
  2、接口的url建议加上'api'字符,清晰地表明此url是一个接口
  3、接口版本号相关字符v1/v2/v3...建议加在接口的url上,表明当前接口的版本号
  4、返回值中包含状态码或者Code,状态码标识当前http请求的响应码,响应码具体表明的状态在http协议里已经做了解释。而code则是对请求返回状态的更细的细分,code弥补了状态码不够用的现实,具体的code表明哪种状态,我们需要跟前端商量决定。
    常用状态码:
    200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
    201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
    202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
    204 NO CONTENT - [DELETE]:用户删除数据成功。
    400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
    401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
    403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
    404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
    406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
    410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
    422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
    500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
  5、路径,把网路上的任何东西都看作资源,restful协议建议我们使用名词来表明接口url路径path
    https://www.luffycity.com/api/v1/animals
  6、method:请求方法,restful建议操作同一资源根据不同的http请求方法执行增删改查等不同的操作
    GET:从服务器取出资源
    POST:创建新的资源
    PUT:更新资源的全部属性字段
    PATCH:更新资源的局部属性字段
    DELETE:从服务器上删除资源
  7、过滤筛选,restful建议我们把操作资源时的过滤条件加在url上面,多以查询字符串的方式
    https://www.luffycity.com/api/v1/animals?age=10&gender=0

  8、错误处理,当返回值的状态码为4XX时,返回错误信息,以便前端展示
    return HttpResponse({'detail': '用户名或者密码错误'},  status=400)

  9、返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范(具体是否需要返回须看前端需求)。
    GET/collection:返回资源对象的列表(数组)
    GET/collection/resource:返回单个资源对象
    POST/collection:返回新生成的资源对象
    PUT/collection/resource:返回完整的资源对象
    PATCH/collection/resource:返回完整的资源对象
    DELETE/collection/resource:返回一个空

  10、最好做到Hypermedia,即返回结果中提供链接,连向其他API(url),使得用户不查文档,也知道下一步应该做什么
    {"link": {
      "rel": "collection https://www.example.com/zoos",
      "href": "https://api.example.com/zoos",
      "title": "List of zoos",
      "type": "application/vnd.yourformat+json"
    }}

restFul介绍及其使用规范的更多相关文章

  1. 第三篇:RESTful介绍

    在介绍restful之前先放一张从之前文章评论里看到的图,我觉得它把soap和rest之间的一些区别形容地非常形象. 在第一篇和第二篇中我们也介绍过,soap协议传递的报文要基于xml格式的soap消 ...

  2. RESTful介绍和使用教程

    出自:https://blog.csdn.net/x541211190/article/details/81141459 一.REST起源REST(Representational State Tra ...

  3. Swagger RESTful API文档规范

    *注意编写的关键词:“必须”.“不能”.“需要”.“应当”,“不得”.“应该”.“不应该”,“推荐”.“可能”和“可选的” 原文链接:http://swagger.io/specification/ ...

  4. (一)RESTful 介绍

    什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”. R ...

  5. RESTful介绍

    web框架的本质:     socket服务端与浏览器的通信     socket(套接字):进程间的一种通信方式 socket服务端功能划分: a.负责与浏览器收发消息(socket通信)  --- ...

  6. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  7. Restful架构API编码规范

    Restful API 目前比较成熟的一套互联网应用程序的API设计理论 一.协议 API与用户的通信协议,总是使用HTTPs协议. 二.域名 应该尽量将API部署在专用域名之下. https://a ...

  8. RESTful 介绍

    什么是RESTful?一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务端交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. ...

  9. Restful 介绍及SpringMVC+restful 实例讲解

    restful不是一个框架,称为一种编码更烦更贴切吧,其核心类位于spring-web.jar中,即RestTemplate.class restful是rpc通过http协议的一种实现方式,和web ...

随机推荐

  1. 封装一个方法获取url上面的参数

    一.取参   ] : ); ]; ; ]., -); ]) === ]; , , b: 'fdfdfd', c: '9999' })); //a=123546&b=fdfdfd&c=9 ...

  2. Linux环境中配置环境变量无效

    1.在Linux系统中的[ ~/.baserc ]文件与[ /etc/profile ]配置环境变量后(可以使任意环境变量)无效的现象,如下为解决办法: 使用命令: vim ~/.zshrc 在 [# ...

  3. 在ReactNative中使用Typescript

    在ReactNative中使用Typescript 少侠放心,跟着我的这个步骤走,保你完美在RN项目中使用Typescript,废话不多说,走你 1.全局安装create-react-native-a ...

  4. js 判断两个时间相差的天数

    judgeDay(sDate1, sDate2) { const sDate1 = `${new Date(sDate1).getFullYear()}-${new Date(sDate1).getM ...

  5. Flask之endpoint错误View function mapping is overwriting an existing endpoint function: ***

    最近在学习Flask, 其中遇到了一个错误, 发现这个问题和Flask, 路由有关系, 所以就记了下来 错误代码: from flask import Flask, render_template, ...

  6. 吐血分享:QQ群霸屏技术教程(利润篇)

    QQ群技术,不论日进几百,空隙时间多的可以尝试,日进100问题不大. QQ群技术,如何赚钱,能赚多少钱?不同行业,不同关键词,不同力度,不一样的产出. 群费 群费,这个和付费群是有区别的,群费在手机端 ...

  7. 自定义控件,继承自 ListView

    public class MyListView extends ListView { /** * 如果在xml中创建并设置了style,就会调用三个参数的. * * @param context * ...

  8. 8.2 USB键盘驱动编写和测试

    目标:根据USB驱动分析和上节的USB鼠标驱动,编写键盘驱动,并测试. 一.原理分析 1. 首先通过打印usb_buf[i]中的8字节数据,看一下按键按下之后会接收到什么. 1)通过按完所有键盘按键打 ...

  9. python并发编程之多进程、多线程、异步、协程、通信队列Queue和池Pool的实现和应用

    什么是多任务? 简单地说,就是操作系统可以同时运行多个任务.实现多任务有多种方式,线程.进程.协程. 并行和并发的区别? 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任 ...

  10. Less Is More【少即是多】

    Less Is More Adults understand what it feels like to be flooed with objects. 成年人知道被物品淹没的感觉. Why do w ...