RESTful 设计理论
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
RESTful 设计理论的更多相关文章
- 游戏UI框架设计(一) : 架构设计理论篇
游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...
- 企业SOA架构设计理论
SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...
- Restful设计思想
1.REST的架构设计 代表性状态传输(Representational State Transfer,REST)在Web领域已经得到了广泛的接受,是基于SOAP和Web服务描述语言(Web Serv ...
- [RESTful] 设计要素
如何设计RESTful API 资源路径(入何规划资源路径) HTTP动词(请求方式 GET/POST...) 过滤信息(分页,查询操作的时候进行信息过滤) 状态码(服务器端响应什么样的状态码) 错误 ...
- django RESTful设计方法
1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https://example.org ...
- RESTful设计方法
REST REST,即Representational State Transfer的缩写.维基百科称其为“具象状态传输”,国内大部分人理解为“表现层状态转化”. RESTful是一种开发理念.维基百 ...
- .NET 微服务 2 架构设计理论(一)
SOA体系架构 面向服务的体系结构 (SOA) ,通过将应用程序分解为多个服务(通常为 HTTP 服务,WCF服务等),将其分为不同类型(例如子系统或层),从而来划分应用程序的结构. 微服务源自 SO ...
- php Restful设计
1.restful是基于资源的,面向资源架构风格(一个链接,一张图.一个文本等等) 2.restful的http协议 2.1 url: 2.1.1 port 服务端口,默认为80 2.1.2 path ...
- restful设计参考
https://www.cnblogs.com/pyspark/p/8599210.html 以下查阅多处文档,思考总结: 所谓restful规范代表一种理想状态,首先对此种规范表示赞同,但应不忘实事 ...
随机推荐
- Python网络编程—socket(一)
从今天开始python基础就介绍完毕了,下面我们将进阶到socket网络编程的介绍,那么socket是什么呢?我们带着这个问题开始今天的介绍: 一.socket初探 socket通常也称作" ...
- 数据库中间件MyCat学习总结(1)——MyCat入门简介
为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代.如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷. MyCat的目标就是:低成本 ...
- [BZOJ1163&1339]Mafia
[Baltic2008]Mafia 题目 匪徒准备从一个车站转移毒品到另一个车站,警方准备进行布控. 对于每个车站进行布控都需要一定的代价,现在警方希望使用最小的代价控制一些车站,使得去掉这些车站后, ...
- noip模拟赛 天天寄快递
分析:并不是特别难的一道题,用到了贪心算法. 首先可以明确的一点是我们要尽量偷贡献最大的数据,要先满足每一个公司的贡献都大于等于K,以这个作为首要条件.那么我们可以先把每个快递公司的快递按照贡献从大到 ...
- Oracle操作管理之用户和角色
1.用户管理 (1)建立用户(数据库验证) CREATE USER smith IDENTIFIED BY smith_pwd DEFAULTTABLESPACE users TEMPORARY TA ...
- vijos 1237 隐形的翅膀
隐形的翅膀 背景 小杉终于进入了天堂.他看到每个人都带着一双隐形翅膀,他也想要. (小杉是怎么看到的?……) 描述 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例,就越完美. 现 ...
- Android 内存管理
1.Activity中的对象生命周期勿大于Activity的生命周期.OOM演示样例代码例如以下: private static Drawable sBackground; @Override pro ...
- 1.4-动态路由协议OSPF④
多区域的OSPF: 划分多区域的主要目的: 1.减少每个区域中的路由条目,进而减少每个路由器的内存中的路由,及其内存消耗,提高转发效率. 2.因为每一个OSPF区域对应在一个OSPF LSDB,配合在 ...
- Mac OS忘记password怎么办?无光盘破解Mac OS的管理员password
mac系统10.8.5升级10.10 出现故障,重新启动系统无法登陆,降级系统10.9 后更新10.9.3 finder无法打开,root权限没了,又再一次覆盖安装10.9(为了保护原系统文件.所以覆 ...
- iOS-UITextView-文本输入视图的使用
#import "ViewController.h" @interface ViewController ()<UITextViewDelegate> { UIView ...