前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >接口设计技巧和最佳实践

接口设计技巧和最佳实践

作者头像
公众号_松华说
修改于 2019-07-30 05:12:46
修改于 2019-07-30 05:12:46
1.4K00
代码可运行
举报
文章被收录于专栏:松华说松华说
运行总次数:0
代码可运行

1、严格的数据模型层

你的响应应该是在代码中严格定义的嵌套数据业务模型,不要依赖数据库查询结果映射,或者其他操作

2、无歧义的服务名

记住你的URL应该能充分表达出真实作用,而不是需要翻阅文档才能了解,另外不要不情愿使用版本号命名路由,当然服务版本应该要做到向下兼容

3、数据类型强一致

数值字段应该始终只包括数字,字符类型字体意义始终只包括字符串,同一个字段中不应该混合多种类型数据

4、始终返回所有的字段

不要删除字段属性,即使值为空

5、不要滥用JSON对象

API中的每个JSON对象应该始终在请求之间具有不可变性,具有严格的定义的字段集,下面这种返回就是可怕的做法

正确返回应该是

6、不要滥用JSON数组

当绝对无法避免在同一数组中返回不同类型实体时,尝试返回足够抽象的对象列表,里面包括所有对象,每个对象显示标明类型。比如飞机和汽车不应该出现在同一个返回数组中,但是无法避免时,可以使用下面这种方式

7、不要依赖普通的硬编码错误信息

接口返回错误时,在响应正文中应该包括严格定义的错误对象,对象一般包括内部代码和附加信息

8、不要使用数字枚举

9、不要返回非封装的响应

使用对象作为根响应容器以允许后续添加任意数量的字段而不会导致弃用,比如我们可以使用is_available布尔值标识book的状态,但是它没有表明为啥是不可用状态?什么时候会变得可用?如果将来需要增加其他信息,你将不得不修改根响应

10、使用JSON布尔值

11、尽量让你的接口满足HATEOAS 约束

服务器提供给客户端的表达中包含了动态的链接信息,客户端通过这些链接来发现可以触发状态转换的动作,资源的URI和其他信息都是动态发现的,当服务端发送变化时,客户端并不需要做出修改

12、考虑让你的接口结果可缓存

客户端可以缓存服务器返回的响应结果,服务器可以定义响应结果的缓存时长设置

13、为你的接口实现限流

API确实实施了速率限制的话,请务必通过响应提供其当前状态来告知你的调用者

14、考虑让你的接口返回支持字段过滤

客户端请求可以指定希望服务端在响应中包括哪些字段或者排除哪些字段,这样可以有效处理响应膨胀

15、接口支持高级分页

分页可以减少客户端接收的数据数目,但是当你需要将分页结果与不断接收的新条目结合时,通常的限制limit和偏移offset分页参数是低效的,因为每次当有个新条目在服务端被添加到先前的集合时,先前发送到客户端的偏移offset都变得无效,而且客户端无法得知在两次请求间新增了多少条目。保持客户端同步一个比较好的办法是使用before_id和after_id参数组合,比如客户端将已知的最新条目的id作为after_id请求参数,然后检索之后创建的新条目

16、接口异常显式返回

RPC调用中Exception应该也是返回值的一部分,应该设计成Checked Exception,尽量让调用方能够显式的处理

17、接口使用Specification规格模式

设计者应该避免太多findBy方法和各自的重载,正确的打开方式应该类似组合模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface StudentApi{
     Student findBySpec(StudentSpec spec);
     List findListBySpec(StudentListSpec spec);
     Page findPageBySpec(StudentPageSpec spec);
 }
代码语言:javascript
代码运行次数:0
运行
复制

18、为功能定义接口,不为个别使用方定义接口

定义好统一的路由接口,而非为每一个使用方定义个别处理,如果需要特殊字段,要考虑特殊字段的通用性,如果有通用性,在通用接口上加上字段,其他使用方可维持空,如果没有通用性,作为一个配置字段配置进去

文章翻译摘录自:

[Part 1: Introduction and planning]

https://medium.com/epignosis-engineering/rest-api-development-tips-and-best-practices-part-1-9cbd4b924285

[Part 2: Schema suggestions, common mistakes and deprecation]

https://medium.com/epignosis-engineering/rest-api-development-tips-and-best-practices-part-2-d3ae4a13cbb7

[Part 3: Documentation tips and moving beyond the basics]

https://medium.com/epignosis-engineering/rest-api-development-tips-and-best-practices-part-3-79c14a88f76b

作者BLOG:www.liangsonghua.me

作者介绍:京东资深工程师-梁松华,在稳定性保障、敏捷开发、JAVA高级、微服务架构方面有深入的理解

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 松华说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HarmonyOS 应用中复杂业务场景下的接口设计
文章链接:https://cloud.tencent.com/developer/article/2468983
连连LL
2024/11/22
1190
HarmonyOS 应用中复杂业务场景下的接口设计
Spring Boot 最佳实践
本文翻译自国外论坛 medium,原文地址:https://medium.com/@raviyasas/spring-boot-best-practices-for-developers-3f3bdffa0090
wayn
2023/08/07
2590
Spring Boot 最佳实践
RESTful API接口设计规范与最佳实践
RESTFull 接口设计目前广泛应用于各种软件系统中,特别是前后端分离架构的web应用。相信各位web应用的开发者对这个概念并不陌生,但是我们经常会遇到几个这样的疑惑或者问题:
Tinywan
2023/11/22
1.2K0
RESTful API接口设计规范与最佳实践
Restful 接口设计最佳事件
本小编这一年是在一家移动互联网公司做App后端接口设计开发工作,最近组内做了一次很大的重构,就是把接口完全根据restful规范进行设计重写。这么做的目的首先是减少和前端app同事的交流成本,其次是因为restful真的已经成为最流行的一种接口设计规范,像instagram、facebooke都在使用,下面是instagram提供的在线接口文档截图。
后端技术探索
2018/08/09
8940
RESTful API 最佳实践
在参考了GitHub API设计和大量博客文章后总结了一下RESTful API的设计,分享如下。想要更好的理解RESTful API首先需要理解如下概念:
哲洛不闹
2018/09/14
1.9K0
RESTful API 最佳实践
RESTful API 设计最佳实践
原文出处:RESTful API Design. Best Practices in a Nutshell. 原文:RESTful API Design. Best Practices in a Nutshell. 作者:Philipp Hauer 项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?哪些不涉及资源操作的URL呢?实现分页和版本控制的最好方法是什么?因为有太多的疑问,设计RES
崔庆才
2018/04/08
1.4K0
RESTful API 设计最佳实践
22条API设计的最佳实践
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
1.2K0
【RESTful】RESTful API 接口设计规范 | 示例
参考官方文档:https://tools.ietf.org/html/rfc2616
前端修罗场
2023/10/07
1.8K0
【RESTful】RESTful API 接口设计规范 | 示例
独家 | 提升API设计技能的22个最佳实践(附链接)
作者:Mohammad Faisal翻译:张一然校对:和中华 本文约2000字,建议阅读7分钟本文介绍了有关设计REST api的一些实用建议。
数据派THU
2021/07/16
5730
API设计最佳实践
应用程序接口(API)是一种接口,它让应用程序可以轻松地使用另一个应用程序的数据和资源,API 对于一个产品或公司的成功至关重要。
java进阶架构师
2021/03/12
8140
API设计最佳实践
REST API设计指导——译自Microsoft REST API Guidelines(四)
前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本。那么什么是好的API设计?这里我们不得不提到REST API。
雪雁-心莱科技
2018/12/27
2.1K0
restful最佳实践--接口规范
前后端分离意味着,前后端之间使⽤ JSON 来交流,两个开发团队之间使⽤ API 作为契约进⾏交互。从此,后台选⽤的技术栈不影响前台。当我们决定需要前后端分离时,我们仍然还需要⾯对⼀系列的问题:
奋飛
2019/08/15
2K0
接口设计中的数据精简技巧:提升效率与优化传输
文章链接:https://cloud.tencent.com/developer/article/2468983
网罗开发
2024/11/21
1230
接口设计中的数据精简技巧:提升效率与优化传输
13 个设计 REST API 的最佳实践
之所以翻译这篇文章,是因为自从成为一名前端码农之后,调接口这件事情就成为了家常便饭,并且,还伴随着无数的争论与无奈。编写友好的 restful api 不论对于你的同事,还是将来作为第三方服务调用接口的用户来说,都显得至关重要。关于 restful api 本身以及设计原则,我陆陆续续也看过很多的文章和书籍,在读过原文后,感觉文中指出的 13 点最佳实践还是比较全面的且具有参考意义的,因此翻译出来分享给大家。如有错误,还望指正。
littlelyon
2020/01/21
3.6K0
深入解析 RESTful API:从设计到实践的完整指南
在当今的互联网世界中,不同系统之间的数据交互和通信是构建现代应用的核心需求。无论是移动应用、Web 平台,还是微服务架构,RESTful API 都扮演着桥梁的角色。它以其简洁性、灵活性和可扩展性,成为开发者构建分布式系统的首选方案。本文将从基础概念到实际应用,一步步拆解 RESTful API 的设计与实现,助你掌握这一关键技术。
DevKevin
2025/02/16
2130
RESTful API 设计最佳实践
Web API 近几年变得越来越火,而简洁的 API 设计在多后端系统交互应用中也变得尤为重要。通常,会使用 RESTful API 来作为我们的 Web API 。本文介绍了几种简洁 RESTful API 设计的最佳实践。
用户7657330
2020/08/14
6590
10个有关RESTful API良好设计的最佳实践
  Web API已经在最近几年变成重要的话题,一个干净的API设计对于后端系统是非常重要的。
物流IT圈
2019/07/16
6480
我们必须要知道的RESTful服务最佳实践
REST:Representational State Transfer(表象层状态转变),如果没听说过REST,你一定以为是rest这个单词,刚开始我也是这样认为的,后来发现是这三个单词的缩写,即使知道了这三个单词理解起来仍然非常晦涩难懂。如何理解RESTful架构,最好的办法就是深刻理解消化Representational State Transfer这三个单词到底意味着什么。
lyb-geek
2018/07/26
1.3K0
MassCMS With APIJSON最佳实践
APIJSON是一种基于JSON格式的API接口开发框架。它的目标是简化后端开发人员编写和维护接口的工作,同时提供灵活、高效、安全的接口访问方式。APIJSON通过解析请求的JSON参数,动态生成SQL语句,并自动执行数据库操作,将结果以JSON形式返回给客户端。它支持多种复杂查询和操作,如分页、条件查询、关联查询、嵌套查询等。APIJSON还提供了权限控制、数据过滤、数据校验等功能,保护数据安全和一致性。通过APIJSON,开发人员可以快速构建稳定、高效的API接口,提升开发效率和代码质量。
KATSU
2023/09/12
6520
MassCMS With APIJSON最佳实践
REST API有关幂等性等11条最佳实践
在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。
lyb-geek
2023/11/08
2820
REST API有关幂等性等11条最佳实践
相关推荐
HarmonyOS 应用中复杂业务场景下的接口设计
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验