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的设计思路相关推荐

  1. 架构必备「RESTful API」设计技巧经验总结

    转载自   架构必备「RESTful API」设计技巧经验总结 [译者注]本文是作者在自己的工作经验中总结出来的RESTful API设计技巧,虽然部分技巧仍有争议,但总体来说还是有一定的参考价值的. ...

  2. RESTful API的设计原则

    说在前面,这篇文章是无意中发现的,因为感觉写的很好,所以翻译了一下.由于英文水平有限,难免有出错的地方,请看官理解一下.翻译和校正文章花了我大约2周的业余时间,如有人愿意转载请注明出处,谢谢^_^ P ...

  3. Eggjs笔记:RESTful API的设计

    关于RESTful API 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备-). 因此,必须有一种统一的机制,方便不同的前端设备与后端进 ...

  4. 好RESTful API的设计原则

    做出一个好的API设计很难.API表达的是你的数据和你的数据使用者之间的契约.打破这个契约将会招致很多愤怒的邮件,和一大堆伤心的用户-因为他们手机上的App不工作了.而文档化只能达到一半的效果,并且也 ...

  5. restful api接口设计

    技术由来: 互联网早期,页面请求和并发量不高,且移动端未盛行时对接口要求不高,使用动态页面(jsp)就能满足绝大多数的使用需求.但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的 ...

  6. 10个有关RESTful API良好设计的最佳实践

    Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...

  7. 基于RESTful API 怎么设计用户权限控制?

    作者:JC_Huang http://www.jianshu.com/p/db65cf48c111 1   前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的 ...

  8. Java网络请求代理API的设计思路

    一个具有代理功能的API,用于对远程请求进行包装,从而进行日志记录/数值记录/响应检查/... https://github.com/kevinten10/vrml/ 问题背景 在项目开发中,网络请求 ...

  9. RESTful API 设计思考

    RESTful API 设计思考,内容来源网络加自己的思考 1.RESTful Web API采用面向资源的架构:同一的接口,所以其成员体现为针对同一资源的操作 2.SOAP Web API采用RPC ...

最新文章

  1. WinRAR也能实现智能备份
  2. 论文不公开代码,应该被直接拒稿?
  3. 我的网站搭建 (第十七天) celery 定时刷新缓存
  4. web 向java_Java web基础
  5. vs code 添加jquery的智能提示
  6. 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
  7. Mac os区别_SN及Mac地址烧录
  8. 贷款太多怎么缓解压力?
  9. 小程序开发——比较好看的登录界面设计
  10. Android知识架构 · Java的编程思想
  11. 海南率先成为新能源汽车新零售第一战场
  12. 贪心算法or背包问题
  13. matlab实现牛顿下山法(下山过程)
  14. 求有多少个连续字串中所有的字母都出现了偶数次
  15. 关于webrtc的多人视频会议的杂乱记录
  16. 关于AQS中enq( )方法CAS操作的疑惑
  17. 网络安全必学知识点之XSS漏洞
  18. 电脑重装系统后wifi间歇性断网该怎么解决
  19. Enigma - Structural image processing protocol (结构图像处理协议协议)
  20. 会导致小程序onhide码 手机息屏_小程序onshow事件

热门文章

  1. 为什么可积不一定可导_耳机为什么分L和R?你一定不知道真相
  2. openssh漏洞_漏洞预警 | OpenSSH 命令注入漏洞
  3. linux vim编辑器主要作用,Linux-vim编辑器
  4. 第十七届全国大学生智能车竞赛:英飞凌芯片第二批申请开放
  5. 如何利用扬声器构建深度学习网络?
  6. 智能车竞赛秘书处与RT-Thread关于第十七届智能车竞赛第一次会议
  7. 2021年春季学期-信号与系统-第三次作业参考答案-第五道题
  8. 全国高校大学生竞赛质量提升工作推进会
  9. 基于串级PID的直立车控制算法研究
  10. 如何查java当前负载_Linux查看机器负载