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 ...
随机推荐
- Hibernate多对一(注解)
package cqvie.yjq.Util; import java.util.List; import org.hibernate.Query; import org.hibernate.Sess ...
- Windows XP SP3 VC6环境下成功编译openssl-0.9.8zh
1.下载openssl-0.9.8zh解压到f:\openssl-0.9.8zh 下载nasm-2.12.03rc1解压到D:\develop\nasm-2.12.03rc1并把添加到系统环境变量PA ...
- CoreOS Hyper-V 安装
CoreOS Hyper-V 安装, Install to disck 准备 安装镜像 https://coreos.com/releases/ 选择版本, 点 Browse Images, 下载以下 ...
- 第七章 springboot + retrofit(转载)
本篇博客转发自:http://www.cnblogs.com/java-zhao/p/5350861.html retrofit:一套RESTful架构的Android(Java)客户端实现. 好处: ...
- ExtJs知识点概述
1.前言 ExtJS的前身是YUI(Yahoo User Interface).经过不断的发展与改进,ExtJS现在已经成功发布到了ExtJS 6版本,是一套目前最完整和最成熟的javascript基 ...
- iOS动画实现改变frme和contenOffset
[UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.4]; [UIView setAnimat ...
- IOS 本地推送 IOS10.0以上 static的作用 const的作用
//需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...
- oracle 创建用户和imp指定表空间
创建用户: 1,sqlplus sys/pwd as sysdba; 2, create user username identified by password; 3, grant dba,conn ...
- Being a Good Boy in Spring Festival 尼姆博弈
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Descr ...
- asp.net下简单的Epplus导出excel
引用的命名空间 using System.IO; using OfficeOpenXml; /// <summary> /// 导出excel /// </summary> / ...