resultful规范(建议)

什么是resultful:

  • REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”
  • REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态
  • 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性。
  • 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)

resultful API规范:

1.根据method的不同,做不同的操作,示例:

@app.route('/order',methods=['GET','POST','PUT','DELETE'])
def order():if request.method == 'GET':return '获取数据'elif request.method == 'POST':return '创建数据'elif request.method == 'PUT':return '更新数据'elif request.method == 'DELETE':return '删除数据'

method还有patch
put 是在服务器更新全部资源
patch 是在服务器上更新局部资源

2.API与用户的通信协议,总是使用HTTPs协议。
3.域名
子域名方式(解决跨域问题):

www.huangyongpeng.com
api.huangyongpeng.com(存在跨域问题)
url方式:

www.huangyongpeng.com
www.huangyongpeng.com/api/
这样别人一看到这种url就知道这是一个接口。
4.版本
url:
www.huangyongpeng.com/api/v1/
也可以写在请求头里面,不过不推荐
5.面向资源编程,网络上任何东西都是资源,均使用名词表示
如一开始用的order
www.huangyongpeng.com/api/v1/order/

6.过滤,通过在url上传参的形式传递搜索条件
如:
www.huangyongpeng/api/v1/order?page=2翻到第二页

7.状态码
常用的有以下几个:
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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

一般可以这样看
200系列是成功
300系列是重定向问题
400系列客服端错误
500系列服务端错误

但是仅仅靠状态码是不能全部表示数据的状态的,所以在返回时用code和状态码结合。

8.错误处理,返回错误信息

9.返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /order/
返回资源对象的列表(数组)
GET /order/1/
返回单个资源对象
POST /order/
返回新生成的资源对象
PUT /order/1/
返回完整的资源对象
PATCH /order/1/
返回完整的资源对象
DELETE /order/1/
返回一个空文档

10.Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么

resultful其实本质上就是一个规范,定义一些规范让我们写API的时候更好作区分,让后台更好作处理,让我们的前台更好的记住这些url,说白了就是在这个url体现出对这个API的操作。遵循这个规范,就是让大家在协同开发的时候,相互之间更加统一了。
原来我们没用API之前,我们用的是get,post…全都能实现,但只不过url得保存好多个,学了resultful API之后,才渐渐的去使用,但使用的过程中,也会发现有的能适用,有的不能适用。

resultful规范使用相关推荐

  1. resultful使用

    resultful规范(建议) 什么是resultful: REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为&q ...

  2. resulful规范_resultful风格简介

    一.为了不同的前端和后端进行信息交互,Resultful API是一种比较流行的一种API规范.结构清晰符合标准,易于理解.扩展方便,便于前端开发者进行区分访问接口资源. Restfule风格是一种软 ...

  3. SpringBoot整合MongoDB实现ResultFul风格接口

    实战 前言 ResultFul风格 添加依赖 Swagger2 mongodb 结构 配置文件(properties) 实体层 配置层 业务层(Service) 控制层(Controller) 测试 ...

  4. java入职学习一之编码规范

    编码规范 好的编码规范可以尽可能的减少一个软件的维护成本,并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护. 好的编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的 ...

  5. Alibaba代码规范插件、FindBugs插件安装及详解,IDEA插件安装,代码规范,代码查错,代码格式规范

    这是帮助开发者规范代码,培养优良的编码习惯的两个IDEA插件

  6. 规范的 Commit Message

    在 Angular 规范中,Commit Message 包含三个部分,分别是 Header.Body 和 Footer,格式如下: <type>[optional scope]: < ...

  7. README 规范和项目文档规范

    1. README 规范 我们直接通过一个 README 模板,来看一下 README 规范中的内容: # 项目名称<!-- 写一段简短的话描述项目 -->## 功能特性<!-- 描 ...

  8. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  9. C/C++ 编程规范(02)— 标识符命名

    标识符的命名要清晰.明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解. 说明:较短的单词可通过去掉"元音"形成缩写:较长的单词可取单词的头几个字母形成 ...

最新文章

  1. python八大排序算法 间书_python八大排序算法
  2. Auto Machine Learning 自动化机器学习笔记
  3. 拖放(Drag和Drop)--html5
  4. c# 三种异步编程模型EAP(*)、 APM(*)和 TPL
  5. 0-1背包(及初始化问题)
  6. 简单帐表插件开发示例分享
  7. 物流英语与计算机操作,《物流英语与计算机模拟题及正确答案.doc
  8. svchost占用内存过高_「电脑常用技巧」电脑卡的原因(占用过高怎么办)?
  9. MySQL中如何定义外键[转]
  10. 1120. Friend Numbers (20)-PAT甲级真题
  11. jacob word另存为
  12. 康涅狄格大学计算机科学排名,康涅狄格大学的计算机科学排名,不可忽视的重点信息...
  13. ZOU YI BU
  14. 到阿德莱德读计算机博士值吗,留学问多点-阿德莱德大学博士申请难吗?有哪些条件?...
  15. javascript算法+手写js面试题
  16. 经验分享:魅族手机刷机步骤
  17. float与position同时使用
  18. mysql分页到后面_mysql的分页查询,越往后翻越慢怎么办
  19. Mac-XQuartz-linux
  20. 三菱FX3U与4台三菱变频器专用指令通讯案例

热门文章

  1. 下载centOS,下载各种linux版本的镜像,来这里!
  2. 常见的10大超参数优化库
  3. spring boot oauth2 facebook
  4. ODOO实现微信单点登入
  5. 回首2022,展望2023
  6. 经营好你的人际关系网
  7. 任天堂FC专题 (现在还有没有人对FC感兴趣? 红白机游戏汉化)
  8. python(14)--集合
  9. ssm与springboot常见注解
  10. 谷歌与Facebook的关系数据库之战