什么是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. springboot2.04+mybatis-plus+swagger2+CodeGenerator

    @author zhangyh SpringBoot技术栈搭建个人博客[项目准备]  RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式 原型设计 事实上,我是直接先去找的原 ...

  2. HTML页面常用的编辑框

    public class FormInputUtil { /** * 获取表单中的InputText * * @param name * @param rs * @return */ public s ...

  3. MySQL里面的锁

    MySQL里面的锁可以分为:全局锁,表级锁,行级锁. 一.全局锁:对整个数据库实例加锁.MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL)这个命令可以 ...

  4. DevOps - 版本控制 - Bitbucket

    Bitbucket 使用139邮箱无法收到注册邮件 https://bitbucket.org

  5. ruby中将数字转化为字符串格式时差

        工作中有时候会碰到需要把数值展示成比较直观的时间差格式,divmod方法很适合做这个操作.   divmod #输出商和余数的数组    60.divmod(50) #=> [1, 10 ...

  6. A*与IDA*的奇妙之旅

    因为A*卡了一天QAQ 那么,A*是什么呢? A* A*是对于bfs的优化,启发式搜索. 例如下图: 不错,在这张图上,小人去找电脑,用bfs的话: 黄色就是bfs的搜索范围...不要问我为什么选黄色 ...

  7. 使用 MySQL 存储 Hue 元数据

    1.在 MySQL 中增加数据库 hue 2.编辑 hue.ini 文件 [[database]] # Database engine is typically one of: # postgresq ...

  8. MVC中Model 的Key值不建议用非int型

    一次在开发中,key的值用了 byte型,结果插入第一条正常,第二条开始就出错,原因是用byte类型无法实现自动增加1,所以为了方便,建议使用 int型. public virtual byte bk ...

  9. OpenCV代码提取:flip函数的实现

    OpenCV中实现图像翻转的函数flip,公式为: 目前fbc_cv库中也实现了flip函数,支持多通道,uchar和float两种数据类型,经测试,与OpenCV3.1结果完全一致. 实现代码fli ...

  10. python语法图