RESTful 设计:

1.协议
通信协议:https

2.域名
部署在API专用域名下,除非API很简单(https://www.example.com/api)
https://api.example.com

3.版本
应将版本号放在url中(.../v1/...);也可以放在http头中

4.路径
不能有动词,只能有名词;所用名词常和数据库表格名对应
(ps:https://api.example.com/v1/users)

5.HTTP动词
GET(SELECT):获取一个或多个 eg: /users /users/id /users/id/hobbys
POST(CREATE):新增 eg: /users
PUT(UPDATE):更新整个对象 eg: /users/id
PATCH(UPDATE):更新部分属性 eg: /users/id
DELETE(DELETE):删除 eg: /users/id /users/id/hobbys/id

HEAD:获取元数据
OPTIONS:获取可以修改的属性

6.过滤信息(类似分页)
?limit=10 条数
?offset=10 开始位置
?page=2&per_page=100 分页
?sortby=name&order=ase 属性排序、排序规则
?name=aaa 添加筛选条件

7.常见状态码(Status Codes)
200 OK 幂等操作
201 CREATED - (post/put/patch) 用户新增或修改成功
202 Accepted - (*) 表示已进入后台排队(异步任务)
204 NO CONTENT - [delete] 删除数据成功
400 Invalid request - (post/put/patch) 请求有误,没有进行修改操作,幂等操作
401 Unauthorized - (*) 没有权限
403 Forbidden - (*) 有权限,但被禁止访问
404 Not Found - (*) 不存在的资源,幂等操作
406 Not Accepted - (get) 请求参数格式错误
410 Gone - (get) 资料被删除,且不会再得到
422 Unprocesable entity - (get/put/patch) 创建对象,发生验证错误
500 Internal server error - (*) 服务器发生错误,无法判断请求是否成功

8.错误处理
状态码为4xx,返回error信息 :{ error:"Invalid is fail"}

9.返回结果
GET: /users   返回列表      /users/id 返回单个对象
POST: /users   返回新增对象
PUT: /users/id  返回整个对象
PATCH: /users/id  返回完整对象
DELETE: /users/id  返回空文档

10.Hypermedia API
向api.example.com根目录发送请求,返回一个文档
{
"user_url":"https://api.example.com/user",
//...
}
向子目录发送请求,返回单个说明文档:
{
"documentation_url":"https://api.example.com/v1/users",
"message":"user infomation"
}

11.其它
1.api的身份认证应该使用OAuth 2.0 框架
2.数据格式尽量用JSON

转载于:https://www.cnblogs.com/DONET-LC/p/Restful.html

RESTful 设计理论相关推荐

  1. UI设计培训之如何将设计理论与实践相结合

    学习UI设计理论知识与实践技术都是要有的,很多人都不爱去听理论知识,这对以后的工作是没有任何帮助的,只有将设计理论与实践相结合才能帮助到自己,那么如何将设计理论与实践相结合?来看看本期下面的详细介绍. ...

  2. 关系数据库设计理论(函数依赖、异常、范式)、ER图

    1. 关系数据库设计理论 1.1 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A. 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决 ...

  3. 二、数据库原理-设计理论

    第一章 关系数据库设计理论   第一节  完整性 关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则.完整性通常包括实体完整性,参照完整性和用户定义完整性. 一.实体完 ...

  4. 人工神经网络理论、设计及应用_红层软岩大直径素混凝土置换桩复合地基设计理论及应用研究——以成都 ICON云端项目为例...

    技术背景 "ICON•云端"项目位于成都市高新南区南端.与华阳交界处,它是一座192m高的综合体建筑.项目场地基底标高地层以强风化泥岩为主,强风化.中等风化泥岩互层严重,节理裂隙发 ...

  5. 如何将自适应设计理论及韧性结构体系技术应用于穿越活动断裂带的隧道建设

    如何将自适应设计理论及韧性结构体系技术应用于穿越活动断裂带的隧道建设 如何将自适应设计理论及韧性结构体系技术应用于穿越活动断裂带的隧道建设 问题描述: 问题背景: 最新进展: 重要意义: 如何将自适应 ...

  6. 24、基于原型的切比雪夫低通滤波器设计理论(插入损耗法)

    24.基于原型的切比雪夫低通滤波器设计理论(插入损耗法) 基于原型的滤波器设计是设计的一个基础的方法,虽然在现在有更加强大的自动化工具能够取代它,但是如果要进行理论研究仍需要对其有所了解. 写此文的初 ...

  7. 绘画语言的要素形状b节奏c立面d色彩,环境艺术设计理论考试题目资料.doc

    环境艺术设计理论知识考卷 1.色彩三要素是指( ). A.黑.白.灰 B.红.黄.蓝 C.明度.纯度.色相 D.间色.复色.补色 2.现代风格的室内设计起源于1919年成立的包豪斯(Bauhalls) ...

  8. 25、基于原型的切比雪夫低通滤波器匹配设计理论

    25.基于原型的切比雪夫低通滤波器匹配设计理论 低通滤波器匹配网络其实就是在滤波的基础上增加了一个阻抗变换的作用,其设计参数包含阻抗变换比.设计带宽参数等等,因为其良好的匹配特性所以经常使用在功率放大 ...

  9. 计算机辅助药物设计 目录,计算机辅助药物设计理论及应用简介,目录书摘

    编辑推荐: 内容简介:计算机辅助药物设计以化学和生物理论为基础,通过分子模拟.预测药物与靶点之间的分子识别,设计和优化先导化合物,在新药研发中发挥着不可或缺的作用.<计算机辅助药物设计理论及应用 ...

最新文章

  1. 报告 | 数字孪生城市研究报告(2019年)
  2. 空跑Python程序
  3. Git 常用命令清单,掌握这些,轻松驾驭版本管理
  4. java 动态绑定原理_详解Java动态绑定机制的内幕(图)
  5. Java面试会问的——数组、声明、初始化、冒泡、多维数组、稀疏数组
  6. php检测字符长度(中文)
  7. CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法
  8. Selenium API-WebDriver 属性
  9. 国密 java springboot 实现 maven依赖 SM2 SM3 SM4 介绍及示例代码 技术专家
  10. iOS开发者必备:五大编程类工具
  11. 计算机编程的好处,青少年学习编程的好处有哪些?
  12. vue将文件图片批量打包下载zip
  13. C语言 —— 你不得不知道的 scanf 的高级用法
  14. react native (Error: Unable To Find Utility “Instruments“, Not A Developer Tool)
  15. Java实现SHA-1、SHA-256和SHA-512加密(原生摘要)
  16. UnityShader-高斯模糊
  17. CSS中100%和inherit(继承)的区别,以及inherit的简单应用
  18. 人脸识别之三检测视频流(摄像头)中的人脸
  19. 吉大计算机研究生996综合,996算什么?来看看研究生究竟有多累
  20. linux抓包工具的学习

热门文章

  1. 搜狗上市总市值53亿美元;微信发布数据报告,9月份日活用户9亿丨价值早报
  2. windows 2003 序列号
  3. RPA自动化办公04——软件自动化(excel,word,浏览器)
  4. el-table中label换行
  5. WPF Datagrid 大量数据加载问题
  6. C#中Linq用法汇集
  7. 如何实现前端微服务化?
  8. html photoswipe原理,手机图片预览插件photoswipe.js使用总结
  9. ConnectionPool-数据库连接池的简单实现
  10. 7. 查询表customer——查询所在城市是北京的顾客姓名,顾客地址,顾客所在城市,邮编。