Restful API的设计思路
API的就是程序员的UI,和其他UI一样,你必须仔细考虑它的用户体验!
Restful只是web api/Json传输接口通过http调,取到还要自己解。Rpc一般都是配套的,客户端直接像调本地函数一样调用(一般用在内网服务间调用,可以用rpc的框架thrift)
Swagger可以用来管理你的RESTful API
使用SSL(https)来提供URL
使用https可以在数据包被抓取时多一层加密
即使你使用了https,黑客抓不到你具体传输的数据,但是可以抓到你请求的URL啊!因此,使用https进行请求时,要采用POST、PUT或者HEAD的方式传输必要的数据
使用GET、POST、PUT、DELETE这几种请求模式
curl请求支持这些请求方式
get(select)从服务器抽取资源;
post(create)在服务器创建一个资源;
put(update)在服务器更新资源;
delete(delete)从服务器删除资源。
在URI中体现资源,而非动作
每个网址代表一种资源,不能用动词只能有名词,多用复数名词
URI的设计应该遵循可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联
使用?用来过滤资源,很多人只是把?简单的当做是参数的传递,很容易造成URI过于复杂、难以理解。?对应的是一些特定条件的查询结果或算法运算结果。
,或;可以用来表示同级资源的关系,有时候我们需要表示同级资源的关系时,可以使用,或;来进行分割。
版本
接口参数或返回值有变化
逻辑处理有变化
HTTP响应码
下面是一些参考的状态码:
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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
返回值结构
使用JSON进行返回:
JSON可以很好的被很多程序支持,javascript的ajax可以直接将JSON转换为对象。
JSON的格式在容量上比xml小很多,可以减低宽带占用,提高传输效率。
字段的合理返回,数据的包裹。因为返回值中,我们常常要对数据进行区分分组,或者按照从属关系打包,所以,我们再返回时,最好有包裹的思想,把数据存放在不同的包裹中进行返回。
{"error_code" : ,"data" : {"user_id" : ,"username" : "admin"},"server_time": 14939939}
鉴权
通行的是使用OAuth的方式,通过AccessToken来进行身份管理
自我保护能力
即使使用的人没仔细看API文档随便乱用也不会导致系统出问题,这种案例非常的多,例如对外提供了一个批量查询接口,结果用户一下传了一个里面有上千个用户id的数组,查询一下直接把内存耗光,像这种情况下不能怪使用的人,而应该怪实现API的这一端的保护做的不够好,按照这样的标准去看,会发现开源的很多东西的API都不太合格;
Restful API的设计思路相关推荐
- 架构必备「RESTful API」设计技巧经验总结
转载自 架构必备「RESTful API」设计技巧经验总结 [译者注]本文是作者在自己的工作经验中总结出来的RESTful API设计技巧,虽然部分技巧仍有争议,但总体来说还是有一定的参考价值的. ...
- RESTful API的设计原则
说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间,如有人愿意转载请注明出处,谢谢^_^ P ...
- Eggjs笔记:RESTful API的设计
关于RESTful API 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备-). 因此,必须有一种统一的机制,方便不同的前端设备与后端进 ...
- 好RESTful API的设计原则
做出一个好的API设计很难.API表达的是你的数据和你的数据使用者之间的契约.打破这个契约将会招致很多愤怒的邮件,和一大堆伤心的用户-因为他们手机上的App不工作了.而文档化只能达到一半的效果,并且也 ...
- restful api接口设计
技术由来: 互联网早期,页面请求和并发量不高,且移动端未盛行时对接口要求不高,使用动态页面(jsp)就能满足绝大多数的使用需求.但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的 ...
- 10个有关RESTful API良好设计的最佳实践
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...
- 基于RESTful API 怎么设计用户权限控制?
作者:JC_Huang http://www.jianshu.com/p/db65cf48c111 1 前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的 ...
- Java网络请求代理API的设计思路
一个具有代理功能的API,用于对远程请求进行包装,从而进行日志记录/数值记录/响应检查/... https://github.com/kevinten10/vrml/ 问题背景 在项目开发中,网络请求 ...
- RESTful API 设计思考
RESTful API 设计思考,内容来源网络加自己的思考 1.RESTful Web API采用面向资源的架构:同一的接口,所以其成员体现为针对同一资源的操作 2.SOAP Web API采用RPC ...
最新文章
- WinRAR也能实现智能备份
- 论文不公开代码,应该被直接拒稿?
- 我的网站搭建 (第十七天) celery 定时刷新缓存
- web 向java_Java web基础
- vs code 添加jquery的智能提示
- 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
- Mac os区别_SN及Mac地址烧录
- 贷款太多怎么缓解压力?
- 小程序开发——比较好看的登录界面设计
- Android知识架构 · Java的编程思想
- 海南率先成为新能源汽车新零售第一战场
- 贪心算法or背包问题
- matlab实现牛顿下山法(下山过程)
- 求有多少个连续字串中所有的字母都出现了偶数次
- 关于webrtc的多人视频会议的杂乱记录
- 关于AQS中enq( )方法CAS操作的疑惑
- 网络安全必学知识点之XSS漏洞
- 电脑重装系统后wifi间歇性断网该怎么解决
- Enigma - Structural image processing protocol (结构图像处理协议协议)
- 会导致小程序onhide码 手机息屏_小程序onshow事件