在本文中,我们将继续熟悉REST API的开发,并研究Code-First方法。
为了拥有良好的微服务,开发良好的REST API非常重要。 “代码优先”方法侧重于根据代码生成合同。 这是最好的方法吗?

你会学
- 开发REST API的代码优先方法是什么?
- 代码优先方法的好处是什么?
- 代码优先方法的缺点是什么?
- 您何时使用“代码优先”方法?
REST API
这是有关REST API的系列文章中的第四篇:
什么是“代码优先”方法?
每当开发诸如REST API或SOAP API之类的服务时,都可以选择以下两种方法之一:
- 代码优先,并根据代码生成合同
- 合同优先和基于合同的代码开发
让我们从“代码优先”的快速示例开始。
Spring Boot Code First REST API示例
我们正在使用Spring Boot Framework开发RESTful Web服务来生成API。 例如,在retrieveAllUsers()API中,我们打开URI“
/ users ”,然后
我们返回所有用户(资源
/用户 ),
调用服务方法。
当我们转到该URL时,我们返回所有用户:

类似地定义其他服务方法,每个方法都有自己的URI。 在此示例中,我们获取代码并从中生成文档。 本文档描述了用户如何使用服务。 为此,我们使用Swagger文档格式:

Swagger允许我们从代码生成文档。 例如,这是Swagger生成以请求所有用户的内容:

它显示我们收到的响应消息的类型以及相应的响应状态。 您甚至可以从Swagger调用此服务以获得答案:

您还可以将
POST请求发送给“
/ users ”:

Swagger将告诉我们如何构造请求消息并指定其中的各个字段格式。 他还将告诉您您将收到的响应类型以及响应代码。 Swagger从代码生成的内容称为
合同 。
代码优先的好处
这种方法的主要优点是:
- 轻松完成合同 :生成合同不需要额外的工作。 这只是服务开发的副产品,因为它可以从代码自动生成。
- 代码和合同同步 :由于合同是从代码生成的,因此它们始终彼此同步
代码优先的缺点
这种方法的缺点如下:
没有平行发展
服务生产者和服务使用者不能并行发展。 首先,您需要开发服务,然后生成合同,然后才能编写将遵守合同的使用者代码。 不了解合同,消费者就无法发展。
团队没有目标
由于在开发服务之前无法知道合同,因此开发中的各个利益相关者没有任何目的。 因此,很有可能会偏离方向并进行不必要的更改,这将浪费精力。
没有跨平台兼容性
在某些较旧的平台上,从代码生成合同不是那么容易。 结果,对于生成的合同来说,平台之间经常不兼容。
关于这个问题,有一个作者的
视频 。
总结
在本文中,我们探讨了构建REST API的代码优先方法。 尽管从开发人员的角度来看,基于代码的方法是有效的,但是在涉及供应商和消费者的联合开发时,它面临着严重的问题。
补充阅读
API开发:设计优先还是代码优先?如何在ASP.NET Web API中开发RESTful Web服务