OpenAPI 规范的生成
引言
REST API(表征状态转移)是一种接口,它允许不同的应用程序通过HTTP协议,利用GET、POST、PUT和DELETE等标准操作进行相互通信。REST API在软件开发中被广泛应用,用于提供可供其他应用程序访问的服务,从而实现不同系统之间的集成。
然而,为了确保 API 易于理解和使用,完善的文档至关重要。这就是 OpenAPI 发挥作用的地方。
OpenAPI 是一种用于描述 RESTful API 的标准。它允许以结构化的方式定义 API 的功能,包括指定可用的端点、接受和返回的数据类型、必需的参数以及预期的响应。 所有这些信息都汇总在一个规范文件中(通常扩展名为 .yaml 或 .json),自动化工具可以解析该文件以生成代码、文档等内容。
OpenAPI 规范旨在同时满足机器和人类的可读性,从而以标准化方式实现 RESTful Web 服务的描述、生成、使用和可视化。因此,OpenAPI 文档代表了对 API 的正式描述,既有助于需要使用该API 的开发者,也便于相关工具利用它来自动化各种流程。
定义规范文件有什么用处?
采用 OpenAPI 来记录 API 具有以下几个好处:
- 清晰度:它提供了详细且结构化的文档,使开发人员能够快速了解如何与 API 交互、应发送哪些请求以及响应中会包含哪些数据。
- 自动化:文档可从代码中自动生成,并能随着 API 的任何变更而保持最新。
- 交互性:诸如Swagger(一套用于 API 文档编写和测试的开源工具套件)等工具包含Swagger UI。这使您能够直接在浏览器中探索和测试 API,从而简化 API 的开发、验证和理解过程。
- 标准化:使用 OpenAPI 可确保文档遵循通用且被广泛认可的格式,从而促进与其他工具及服务的集成。
如何生成 OpenAPI 文档?
生成 OpenAPI 规范文件主要有两种方法:
- “代码优先”(自动)方法:如果已在 InterSystems IRIS 中开发了 REST API,则无需手动编写规范文件,即可自动生成 OpenAPI 文档。IRIS 提供了一项集成功能,可根据 REST 类定义将 OpenAPI 文档导出为 JSON 或 YAML 格式。
- “规范优先”(手动)方法:在此情况下,需手动编写 YAML 或 JSON 格式的 OpenAPI 文件,其中描述了所有端点、参数和预期响应。当您希望在实现 API 之前先对其进行定义时,此方法非常有用,有助于设计工作,并便于与其他开发人员或利益相关者共享。
自动方法
在 InterSystems IRIS 中,有两种方法可以自动生成 OpenAPI 规范文件。
方法 1:使用 GetWebRESTApplication 函数
一种方法是使用 %REST.API 类提供的GetWebRESTApplication函数。
一个实际的使用示例是在分派类中添加以下函数:
ClassMethod GenerateOpenAPI() As %Status
{
// The name of the REST application
Set webApplication = "MyAPP" // Replace with the name of your web app
// Retrieve the OpenAPI 2.0 documentation
Set sc = ##class(%REST.API).GetWebRESTApplication("", webApplication, .swagger)
If $$$ISERR(sc) {
Quit sc // If an error occurred, exit the method
}
// Return the documentation in JSON format
Set %response.ContentType = "application/json"
Do ##class(OMRREST.impl).%WriteResponse(swagger.%ToJSON())
Quit $$$OK
}
此外,请在UrlMap 中添加以下路由:
<Route Url="/openapi" Method="GET" Call="GenerateOpenAPI"/>
至此,您已具备从分发类生成规范文件所需的一切条件。要查看文档,请访问以下 URL(其中 MyWebapp 是您在管理门户中定义的 Web 应用程序名称):
<host>:<port>/MyWebapp/openapi通过此方式生成的 JSON 代表了您 API 的 OpenAPI 规范。在探讨第二种方法之后,我们将了解如何在 Swagger 中查看和测试该规范。
方法 2:使用管理 API
生成 OpenAPI 规范文件的另一种方法是使用InterSystems IRIS 管理 API。
要调用此服务,您可以使用Postman 等工具,这是一款允许您测试、文档化和自动化 API 的开发工具。
Postman 提供了一个简单直观的界面,用于发送 HTTP 请求(GET、POST、PUT、DELETE 等)、查看响应、管理身份验证以及创建自动化测试。
若要使用 Postman 发送请求,请按照以下步骤操作:
- 点击
New按钮 并创建一个 HTTP 请求。.png)
- 按以下方式配置请求并发送:
- 选择GET作为 HTTP 方法。
-
按以下格式指定 URL,其中请使用您实例的
<baseURL>:https://<baseURL>/api/mgmnt/v1/namespace/myapp
此处,
namespace是您创建 REST 服务的命名空间名称,myapp是您的 Web 应用程序名称。 - 将“授权”方法设置为“基本认证”,并提供具有指定命名空间读取权限的用户名和密码。
.png)
生成 JSON 后,可使用Swagger Editor 等工具进行查看和测试。
{
"info":{
"title":"",
"description":"",
"version":"",
"x-ISC_Namespace":"MyNamespace"
},
"basePath":"/MyWebapp",
"paths":{
"/loginForm":{
"post":{
"parameters":[
{
"name":"payloadBody",
"in":"body",
"description":"Request body contents",
"required":false,
"schema":{
"type":"string"
}
}
],
"operationId":"loginForm",
"x-ISC_ServiceMethod":"loginForm",
"responses":{
"default":{
"description":"(Unexpected Error)"
},
"200":{
"description":"(Expected Result)"
}
}
}
},
"/refresh":{
"post":{
"parameters":[
{
"name":"payloadBody",
"in":"body",
"description":"Request body contents",
"required":false,
"schema":{
"type":"string"
}
}
],
"operationId":"refresh",
"x-ISC_ServiceMethod":"refresh",
"responses":{
"default":{
"description":"(Unexpected Error)"
},
"200":{
"description":"(Expected Result)"
}
}
}
},
"/logout":{
"post":{
"parameters":[
{
"name":"payloadBody",
"in":"body",
"description":"Request body contents",
"required":false,
"schema":{
"type":"string"
}
}
],
"operationId":"logout",
"x-ISC_ServiceMethod":"logout",
"responses":{
"default":{
"description":"(Unexpected Error)"
},
"200":{
"description":"(Expected Result)"
}
}
}
},
"/openapi":{
"get":{
"operationId":"GenerateOpenAPI",
"x-ISC_ServiceMethod":"GenerateOpenAPI",
"responses":{
"default":{
"description":"(Unexpected Error)"
},
"200":{
"description":"(Expected Result)"
}
}
}
}
},
"swagger":"2.0"
}手动方法
生成 OpenAPI 文档的手动方法是指手动编写 YAML 或 JSON 格式的规范文件。当您希望在 API 实现之前对其设计进行完全控制,或者在不依赖自动化工具的情况下对现有 API 进行文档记录时,这种方法特别有用。
要编写 OpenAPI 规范文件,您可以参考OpenAPI 规范 2.0 版的官方文档,其中包含必填字段的信息,以及如何描述端点、参数、响应等内容。这份详细指南将帮助您了解如何正确构建 YAML 或 JSON 文件,以符合 OpenAPI 标准。
采用此方法的一个典型示例是,按照官方 InterSystems IRIS 文档中概述的方法创建 REST 服务。
您可通过访问文档的此页面,了解如何在 IRIS 中开发和配置 REST 应用程序,该页面分步介绍了使用 IRIS 发布 RESTful 应用程序所需的方法。
.png)
.png)