RESTful接口设计原则/最佳实践(学习笔记)
RESTful接口设计原则/最佳实践(学习笔记)
原文地址:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
1、RESTful接口建议统一使用复数,而不是单数
2、不建议使用HATEOAS
3、在大多数的教案中,都推荐使用Accept Header来指明是xml还是son,而作者建议直接在url中增加.json或者.xml
4、使用snake_case命名风格来给RESTful URL命名,而不是camelCase风格
5、为了保证接口的可读性和友好性,不建议自己将json中多余的空白去除,而是提供格式化良好的信息以满足用户调试的需求,启用gzip同样能够减少到因为空白等问题而引起的数据大小问题。
6、当一个Resource被查询的时候,可能有一些相关的资源需要被关联出来,则可以在参数中携带embed (或者expand),然后可以把相关的资源展开(比如原来描述一个id,现在把id对应的具体对象也查询出来)。
7、原文中一些其它的观点(非常多),因为比较常见/不太容易简单地表述,所以就没有列出来了,最好阅读原文。
个人理解:(非原文观点)
1、关于embed(或者expand)参数而言,如果是用文档式/KeyValue式的NoSQL数据库,则似乎根本不需要,它们本身就把对象聚合在了一起。
2、关于缓存,如果要在RESTful中用好ETag、Last-Modified,假设RESTful后台是关系型数据库,那么如何标识一个资源的版本/修改时间呢?这个其实是非常难的,因为对于一个存在多表联查的对象而言,你可以保证单个表中的信息未更改,你不能保证关联表中的信息未更改,而且当你再增加fields(参考原文)限定的时候,你说在此范围之外的变化算变化还是不算变化?但是用文档式/KeyValue式的NoSQL数据库的话,感觉在大部分场景上就容易得多,因为通常一个Key对应的结果,是固定的,不存在多表联查的问题,那么版本号这件事就可以是一个特殊值被“设计”在对象中。
RESTful接口设计原则/最佳实践(学习笔记)的更多相关文章
- RESTful接口设计原则和优点
RESTful架构优点: 前后端分离,减少流量 安全问题集中在接口上,由于接受json格式,防止了注入型等安全问题 前端无关化,后端只负责数据处理,前端表现方式可以是任何前端语言(android,io ...
- .NET 云原生架构师训练营(设计原则&&设计模式)--学习笔记
目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You ...
- atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
atitit. 日志系统的原则and设计and最佳实践总结. 1. 日志系统是一种不可或缺的单元测试,跟踪调试工具 1 2. 日志系统框架通常应当包括如下基本特性 1 1. 所输出的日志拥有自己的分类 ...
- [转]10个有关RESTful API良好设计的最佳实践
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...
- 10个有关RESTful API良好设计的最佳实践
Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的. 通常我们为Web API使用RESTful设计,REST概念分离了API结构和逻辑资源,通过Http方法GE ...
- 10个有关RESTful API良好设计的最佳实践(转)
原文地址:http://www.jdon.com/soa/10-best-practices-for-better-restful-api.html Web API已经在最近几年变成重要的话题,一个干 ...
- 微观SOA:服务设计原则及其实践方式
大 量互联网公司都在拥抱SOA和服务化,但业界对SOA的很多讨论都比较偏向高大上.本文试图从稍微不同的角度,以相对接地气的方式来讨论SOA, 集中讨论SOA在微观实践层面中的缘起.本质和具体操作方式, ...
- Prometheus Metrics 设计的最佳实践和应用实例,看这篇够了!
Prometheus 是一个开源的监控解决方案,部署简单易使用,难点在于如何设计符合特定需求的 Metrics 去全面高效地反映系统实时状态,以助力故障问题的发现与定位.本文即基于最佳实践的 Metr ...
- RESTful API设计原则与规范
RESTful API设计原则与规范 一.背景与基础概念 2 二.RESTful API应遵循的原则 3 1.协议(Protocol) 3 2.域名(ROOT URL) 3 3.版本(Versioni ...
随机推荐
- GoogleNet tips
Inception Module googlenet的Inception Module Idea 1: Use 1x1, 3x3, and 5x5 convolutions in parallel t ...
- 使用SVN同步资源后图标样式的详细解读
项目视图 The Package Explorer view - 已忽略版本控制的文件.可以通过Window → Preferences → Team → Ignored Resources.来忽 ...
- .net学习笔记--文件读写的几种方式
在.net中有很多有用的类库来读写硬盘上的文件 一般比较常用的有: File:1.什么时候使用:当读写件大小不大,同时可以一次性进行读写操作的时候使用 2.不同的方式可以读写文件类型不 ...
- sql server 执行计划(execution plan)介绍
大纲:目的介绍sql server 中执行计划的大致使用,当遇到查询性能瓶颈时,可以发挥用处,而且带有比较详细的学习文档和计划,阅读者可以按照我计划进行,从而达到对执行计划一个比较系统的学习. 什么是 ...
- redis 数据类型
上一篇文章主要写了redis在linux下的安装,这里讲一下redis基本的数据类型,linux的数据类型比较丰富,主要有五种数据类型 .String 字符串类型 常用命令: 除了get.set.in ...
- 循环结构——whlie do whlie for for each
1. while循环 while(循环条件){ (特点为:先判断再执行) 循环操作 } 例题: 计算1+2+3+...+100 int i = 1; int sum = 0; wh ...
- 在CMMI推广过程中EPG常犯的错误(转)
本文转自: http://developer.51cto.com/art/200807/86953.htm 仅用于个人收藏,学习.如有转载,请联系原作者. ---------------------- ...
- Python切片
切片是啥, 可以吃么 切片肿么用哈 辣么长,记不住 切片是啥, 可以吃么 嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字 ...
- Httpoxy远程代理感染漏洞 [转]
Httpoxy是一个最新曝出的一个CGI程序漏洞,它主要可能威胁到运行在CGI上的PHP,Go,Python和其他代码程序语言. 0×01 什么是httpoxy? 具体来说, httpoxy是一组影 ...
- tomcat连接池配置详解
<bean class="org.apache.tomcat.jdbc.pool.PoolProperties"> <property name="ur ...