企业级API设计

简介: 最近对service的API设计,在team内有些讨论,主要集中在API是足够抽象、通用好呢, 还是具体、易用好? 其实这个是要折衷的,通用的好处是以后更改API的可能性小,但坏处是想要通用,里面的字段就不能定义太死,不定义死,极端的例子是全部用Name/Value Pair,最通用,但client面对这些NV,根本不知道怎么去设值,这样的API很明显是不友好,难用的,而一个好的API应

最近对service的API设计,在team内有些讨论,主要集中在API是足够抽象、通用好呢, 还是具体、易用好?

其实这个是要折衷的,通用的好处是以后更改API的可能性小,但坏处是想要通用,里面的字段就不能定义太死,不定义死,极端的例子是全部用Name/Value Pair,最通用,但client面对这些NV,根本不知道怎么去设值,这样的API很明显是不友好,难用的,而一个好的API应该是自明的(self-documenting)的。 所以需要折衷。

关于API 通用性(Generic)和 自明性(self-documenting)讨论继续...

这个折衷要看应用场合,世界上最大的分布式系统是什么?对,是万维网,它的API是什么,对,HTTP。 万维网包罗万象,所以其API(HTTP)要绝对的通用,可扩展。怎样做到呢,没有任何限制(constraint)的东西,无疑是最自由、最可扩展的,所以稍微知晓HTTP的同学,不难发现在HTTP里,除了消息头的元数据名如 HOST,Connection-type等是要遵循协议规范的(消息头也是可扩展的,用户可以自行添加头部元数据,通常以X-开头),对于消息体(Message Body)可以说是绝对的自由,没有一丁点限制,你可以在里面放HTML,也可以是XML、JSON, 也可以是图像,二进制流,音频,视频,可以说是世界上最通用的API。

再看一个场合,公司A和公司B合作,A需要提供一组API给B公司条用,好吧,B公司,我们决定使用世界上最通用的API给你用,www.A.com/service4B,可是里面的request body要怎么写呢?像这样针对性不叫强的API,最好还是具体一点,这样client看到你的接口,就基本知道要怎么调用你的服务了, 比如对于查询合同的API,你就必须要在HTTP Body里写明:

<contract>

<contractId>123456</contractId>

</contract>

或者用REST的思想,URI为 www.A.com/service4B/contract/123456.   这样的API失去了通用性,但其专用性以及对特定环境下的约束,正是B公司我们想要的。

还有API也是一个不断演化的过程,所以不用太担心当前的API是不是扩展性太差,这也是Agile的思想,包括HTTP从1.0 到1.X 也是在不断的演化当中。


当然一个企业级API需要考虑的因素还很多,这里先开个头,后面会结合公司的CommerceOS (eBay next gen public API),在详细讨论....

还有个原因就是,刚才看到一篇文章《管理企业级API的7个最佳实践》,觉得说的还是很在理,先copy在这里,后面有时间再整理一下。


1. API优先的设计方法

SOA最佳实践就是将API开发从后端应用中完全地分离出来。“与其在执行应用之后再创建API,倒不如先尽己所能提前创建好一个接口,然后再将其与后端逻辑相挂钩。这样一来,问题便可逐个击破,开发者也可以更专注于清晰明了的API执行过程,而API测试也会变得更加容易。”Shafii如此说道。

2. 选择一个稳定的API运行时

运行时的选择可以说是至关重要。因此,我们必须要注意一个企业级API从创建开始的所有需求,比如可扩展性、实用性、可靠性等。即使API没有进行修改,也应该能够在企业内部和云端顺利运行。这样一来,开发者便可以干很多事情,比如利用云来获取更多额外资源,或者在充分准备之后,实现企业模型到云模型的转移等。

3. 创建一个中央服务存储库

另外一个关键点就是将API开放到一个中央存储库中,以便于开发者和终端用户发现。

4. 通过版本、策略和契约来管理服务

对于任何操作系统或应用程序来说,API的版本控制都是必不可少的,其重要程度不亚于安全性和策略管理。

5. 提升和开放你的API

Shafii强烈建议为API创建一个社区平台,并为其提供信息和技术支持。

6. 通过度量、分析来监控和测量API使用情况

在商业活动中,评估力度越大,就越能有效追踪到API的运行过程和结果。不管是从潜在的技术层面还是商业层面,一定的度量标准都会帮助开发者更好地了解API的使用情况。

7. 重构API以提升API用户体验和效率

对于这最后一点,Shafii更是反复强调,一定要对API保持不断的更新。


目录
相关文章
|
7月前
|
前端开发 测试技术 API
企业级API工具的选择:Apipost和Apifox哪个好
Apifox相比Apipost在企业级API协作方面表现更出色,其一体化平台设计有效提升团队协作效率,功能整合度高,支持标准化接口管理,更适合规模化团队和技术协作需求。
469 120
|
8月前
|
SQL 安全 BI
Dataphin数据服务API行级权限管控解决方案 ——构建企业级数据安全的精细化管控体系
Dataphin数据服务推出行级权限管控功能,解决传统权限管理中用户权限分散、管控复杂等问题。支持直连与代理双模式访问,实现API与SQL权限统一管理,满足金融、零售、医疗等行业对数据访问的精细化控制需求。通过动态权限决策引擎和自动化继承体系,确保数据安全且提升应用开发效率。
765 0
|
机器学习/深度学习 人工智能 自然语言处理
企业级API集成方案:基于阿里云函数计算调用DeepSeek全解析
DeepSeek R1 是一款先进的大规模深度学习模型,专为自然语言处理等复杂任务设计。它具备高效的架构、强大的泛化能力和优化的参数管理,适用于文本生成、智能问答、代码生成和数据分析等领域。阿里云平台提供了高性能计算资源、合规与数据安全、低延迟覆盖和成本效益等优势,支持用户便捷部署和调用 DeepSeek R1 模型,确保快速响应和稳定服务。通过阿里云百炼模型服务,用户可以轻松体验满血版 DeepSeek R1,并享受免费试用和灵活的API调用方式。
746 12
|
消息中间件 JavaScript 关系型数据库
开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core
开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core
418 0
|
搜索推荐 API 开发者
探讨使用API的优点及其在企业级应用中的作用
使用API可以帮助开发者快速、高效地构建功能丰富、用户体验良好的应用程序,同时也可以帮助企业和机构提高效率、创造新的商业模式和创新服务。在企业级应用中,使用API可以实现数字化转型、创造新的商业模式和创新服务、提高内部效率以及实现跨部门协作等目标。因此,使用API是当今应用程序开发和企业级应用建设的必备技术之一。
|
XML JSON 前端开发
软件测试|Spring Boot 的 RESTful API 设计与实现
软件测试|Spring Boot 的 RESTful API 设计与实现
软件测试|Spring Boot 的 RESTful API 设计与实现
|
SQL 安全 Java
微服务API开放授权平台的设计与实现
微服务API开放授权平台的设计与实现
894 0
微服务API开放授权平台的设计与实现
|
XML SQL JSON
RESTful API 设计指南
RESTful API 设计指南
535 0
RESTful API 设计指南
|
API 微服务 Java
Netflix 实用 API 设计 (下)
Netflix 实用 API 设计 (下)
419 0
Netflix 实用 API 设计 (下)
|
分布式计算 安全 API
异步 API 设计之扇入扇出模式
扇出/扇入模式是更高级 API 集成的主要内容。这些应用程序并不总是表现出相同的可用性或性能特征。
异步 API 设计之扇入扇出模式