使用 OpenAPI 和 Swagger UI
本指南将介绍 Quarkus 应用程序如何通过 OpenAPI 规范公开其 API 描述,以及如何通过名为 Swagger UI 的用户友好界面进行测试。
先决条件
要完成本指南,您需要
-
大约 15 分钟
-
一个 IDE
-
已安装 JDK 17+ 并正确配置了
JAVA_HOME
-
Apache Maven 3.9.9
-
如果您想使用它,可以选择 Quarkus CLI
-
如果您想构建本机可执行文件(或者如果您使用本机容器构建,则为 Docker),可以选择安装 Mandrel 或 GraalVM 并进行适当的配置
解决方案
我们建议您按照以下部分的说明逐步创建应用程序。但是,您可以直接跳到完成的示例。
克隆 Git 存储库:git clone https://github.com/quarkusio/quarkus-quickstarts.git
,或下载存档。
解决方案位于 openapi-swaggerui-quickstart
目录中。
创建 Maven 项目
首先,我们需要一个新项目。使用以下命令创建一个新项目
对于 Windows 用户
-
如果使用 cmd,(不要使用反斜杠
\
并将所有内容放在同一行上) -
如果使用 Powershell,请将
-D
参数用双引号括起来,例如"-DprojectArtifactId=openapi-swaggerui-quickstart"
公开 REST 资源
我们将创建一个 Fruit
bean 和一个 FruitResource
REST 资源(如果您想了解更多关于如何使用 Quarkus 构建 REST API 的细节,请随时查看编写 JSON REST 服务指南)。
package org.acme.openapi.swaggerui;
public class Fruit {
public String name;
public String description;
public Fruit() {
}
public Fruit(String name, String description) {
this.name = name;
this.description = description;
}
}
package org.acme.openapi.swaggerui;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.Path;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Set;
@Path("/fruits")
public class FruitResource {
private Set<Fruit> fruits = Collections.newSetFromMap(Collections.synchronizedMap(new LinkedHashMap<>()));
public FruitResource() {
fruits.add(new Fruit("Apple", "Winter fruit"));
fruits.add(new Fruit("Pineapple", "Tropical fruit"));
}
@GET
public Set<Fruit> list() {
return fruits;
}
@POST
public Set<Fruit> add(Fruit fruit) {
fruits.add(fruit);
return fruits;
}
@DELETE
public Set<Fruit> delete(Fruit fruit) {
fruits.removeIf(existingFruit -> existingFruit.name.contentEquals(fruit.name));
return fruits;
}
}
您也可以创建一个测试
package org.acme.openapi.swaggerui;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import jakarta.ws.rs.core.MediaType;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.containsInAnyOrder;
@QuarkusTest
public class FruitResourceTest {
@Test
public void testList() {
given()
.when().get("/fruits")
.then()
.statusCode(200)
.body("$.size()", is(2),
"name", containsInAnyOrder("Apple", "Pineapple"),
"description", containsInAnyOrder("Winter fruit", "Tropical fruit"));
}
@Test
public void testAdd() {
given()
.body("{\"name\": \"Pear\", \"description\": \"Winter fruit\"}")
.header("Content-Type", MediaType.APPLICATION_JSON)
.when()
.post("/fruits")
.then()
.statusCode(200)
.body("$.size()", is(3),
"name", containsInAnyOrder("Apple", "Pineapple", "Pear"),
"description", containsInAnyOrder("Winter fruit", "Tropical fruit", "Winter fruit"));
given()
.body("{\"name\": \"Pear\", \"description\": \"Winter fruit\"}")
.header("Content-Type", MediaType.APPLICATION_JSON)
.when()
.delete("/fruits")
.then()
.statusCode(200)
.body("$.size()", is(2),
"name", containsInAnyOrder("Apple", "Pineapple"),
"description", containsInAnyOrder("Winter fruit", "Tropical fruit"));
}
}
公开 OpenAPI 规范
Quarkus 提供了符合 MicroProfile OpenAPI 规范的 SmallRye OpenAPI 扩展,用于生成您的 API OpenAPI v3 规范。
您只需将 openapi
扩展添加到您的 Quarkus 应用程序中
quarkus extension add quarkus-smallrye-openapi
./mvnw quarkus:add-extension -Dextensions='quarkus-smallrye-openapi'
./gradlew addExtension --extensions='quarkus-smallrye-openapi'
这会将以下内容添加到您的构建文件中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
implementation("io.quarkus:quarkus-smallrye-openapi")
现在,我们可以运行我们的应用程序了
quarkus dev
./mvnw quarkus:dev
./gradlew --console=plain quarkusDev
应用程序启动后,您可以向默认的 /q/openapi
端点发出请求
$ curl https://:8080/q/openapi
openapi: 3.1.0
info:
title: Generated API
version: "1.0"
paths:
/fruits:
get:
responses:
200:
description: OK
content:
application/json: {}
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Fruit'
responses:
200:
description: OK
content:
application/json: {}
delete:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Fruit'
responses:
200:
description: OK
content:
application/json: {}
components:
schemas:
Fruit:
properties:
description:
type: string
name:
type: string
如果您不喜欢默认的端点位置
|
您可以使用
|
按 CTRL+C
停止应用程序。
提供应用程序级别的 OpenAPI 注解
有一些 MicroProfile OpenAPI 注解可以描述全局 API 信息,例如以下内容:
-
API 标题
-
API 描述
-
版本
-
联系信息
-
许可
所有这些信息(以及更多)都可以通过在 Jakarta REST Application
类上使用适当的 OpenAPI 注解包含在您的 Java 代码中。由于 Quarkus 中不需要 Jakarta REST Application
类,因此您可能需要创建一个。它可以简单地是一个扩展 jakarta.ws.rs.core.Application
的空类。然后,可以使用各种 OpenAPI 注解(如 @OpenAPIDefinition
)来注解这个空类。例如:
@OpenAPIDefinition(
tags = {
@Tag(name="widget", description="Widget operations."),
@Tag(name="gasket", description="Operations related to gaskets")
},
info = @Info(
title="Example API",
version = "1.0.1",
contact = @Contact(
name = "Example API Support",
url = "http://exampleurl.com/contact",
email = "techsupport@example.com"),
license = @License(
name = "Apache 2.0",
url = "https://apache.ac.cn/licenses/LICENSE-2.0.html"))
)
public class ExampleApiApplication extends Application {
}
另一种选择是利用 SmallRye 提供的功能(而非规范的一部分)通过配置来添加这些全局 API 信息。这样,您就不需要 Jakarta REST Application
类,并且可以为每个环境命名不同的 API。
例如,将以下内容添加到您的 application.properties
文件中:
quarkus.smallrye-openapi.info-title=Example API
%dev.quarkus.smallrye-openapi.info-title=Example API (development)
%test.quarkus.smallrye-openapi.info-title=Example API (test)
quarkus.smallrye-openapi.info-version=1.0.1
quarkus.smallrye-openapi.info-description=Just an example service
quarkus.smallrye-openapi.info-terms-of-service=Your terms here
quarkus.smallrye-openapi.info-contact-email=techsupport@example.com
quarkus.smallrye-openapi.info-contact-name=Example API Support
quarkus.smallrye-openapi.info-contact-url=http://exampleurl.com/contact
quarkus.smallrye-openapi.info-license-name=Apache 2.0
quarkus.smallrye-openapi.info-license-url=https://apache.ac.cn/licenses/LICENSE-2.0.html
这将提供与上面 @OpenAPIDefinition
示例类似的信息。
使用过滤器增强 OpenAPI 架构
您可以使用一个或多个过滤器来更改生成的 OpenAPI 架构。过滤器可以在构建时或运行时运行。
/**
* Filter to add custom elements
*/
@OpenApiFilter(OpenApiFilter.RunStage.BUILD) (1)
public class MyBuildTimeFilter implements OASFilter { (2)
private IndexView view;
public MyBuildTimeFilter(IndexView view) { (3)
this.view = view;
}
@Override
public void filterOpenAPI(OpenAPI openAPI) { (4)
Collection<ClassInfo> knownClasses = this.view.getKnownClasses();
Info info = OASFactory.createInfo();
info.setDescription("Created from Annotated Buildtime filter with " + knownClasses.size() + " known indexed classes");
openAPI.setInfo(info);
}
}
1 | 用 @OpenApiFilter 注解方法,并指定运行阶段(BUILD、RUN、BOTH) |
2 | 实现 OASFilter 并覆盖任何方法 |
3 | 对于构建阶段过滤器,可以传入索引(可选) |
4 | 获取生成的 OpenAPI 架构,并根据需要进行增强 |
请记住,设置架构字段会覆盖已生成的内容,您可能需要获取并添加(即修改)。另外,请注意生成的值可能为 null,因此您需要对其进行检查。
从静态文件加载 OpenAPI 架构
Quarkus 支持服务静态 OpenAPI 文档,而不是动态地从注解扫描生成 OpenAPI 架构。要服务的静态文件必须是一个符合 OpenAPI 规范的有效文档。符合 OpenAPI 规范的 OpenAPI 文档本身就是一个有效的 JSON 对象,可以表示为 yaml
或 json
格式。
为了实际演示这一点,我们将把 OpenAPI 文档放在 META-INF/openapi.yaml
下,用于我们的 /fruits
端点。如果您喜欢,Quarkus 也支持备用的 OpenAPI 文档路径。
openapi: 3.1.0
info:
title: Static OpenAPI document of fruits resource
description: Fruit resources Open API documentation
version: "1.0"
servers:
- url: https://:8080/q/openapi
description: Optional dev mode server description
paths:
/fruits:
get:
responses:
200:
description: OK - fruits list
content:
application/json: {}
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Fruit'
responses:
200:
description: new fruit resource created
content:
application/json: {}
delete:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Fruit'
responses:
200:
description: OK - fruit resource deleted
content:
application/json: {}
components:
schemas:
Fruit:
properties:
description:
type: string
name:
type: string
默认情况下,对 /q/openapi
的请求将服务于静态文件和从应用程序端点代码生成的模型组合而成的 OpenAPI 文档。但是,我们可以通过在 application.properties
中添加 mp.openapi.scan.disable=true
配置来仅服务静态 OpenAPI 文档。
现在,对 /q/openapi
端点的请求将服务于静态 OpenAPI 文档,而不是生成的文档。
关于 OpenAPI 文档路径
Quarkus 支持存储 OpenAPI 文档的各种路径。我们建议将其放在
在开发过程中支持静态 OpenAPI 文档的实时重新加载。Quarkus 会动态地拾取您的 OpenAPI 文档的修改。 |
更改 OpenAPI 版本
默认情况下,当生成文档时,使用的 OpenAPI 版本将是 3.1.0
。如果您使用如上所述的静态文件,将使用文件中的版本。您还可以使用以下配置在 SmallRye 中定义版本:
mp.openapi.extensions.smallrye.openapi=3.0.4
如果您的 API 需要特定版本才能通过网关,这一点可能很有用。
在 |
自动生成 Operation Id
Operation Id 可以使用 @Operation
注解设置,并且在许多情况下,在使用工具从模式生成客户端存根时非常有用。Operation Id 通常用作客户端存根中的方法名。在 SmallRye 中,您可以使用以下配置自动生成此 Operation Id:
mp.openapi.extensions.smallrye.operationIdStrategy=METHOD
现在您无需使用 @Operation
注解。在生成文档时,方法名将用于 Operation Id。
属性值 | 描述 |
---|---|
|
使用方法名。 |
|
使用类名(不含包名)加上方法名。 |
|
使用类名加上方法名。 |
在开发中使用 Swagger UI
在构建 API 时,开发人员希望快速进行测试。Swagger UI 是一个非常棒的工具,可以可视化和交互式地处理您的 API。UI 是从您的 OpenAPI 规范自动生成的。
Quarkus 的 smallrye-openapi
扩展附带了一个 swagger-ui
扩展,其中嵌入了一个配置正确的 Swagger UI 页面。
默认情况下,Swagger UI 仅在 Quarkus 以开发或测试模式启动时可用。 如果您也希望在生产环境中使用它,可以在
这是一个构建时属性,在应用程序构建后无法在运行时更改。 |
默认情况下,Swagger UI 可在 /q/swagger-ui
访问。
您可以通过在 application.properties
中设置 quarkus.swagger-ui.path
属性来更新 /swagger-ui
的子路径。
quarkus.swagger-ui.path=my-custom-path
不允许使用 |
现在,我们可以运行我们的应用程序了
./mvnw quarkus:dev
您可以在应用程序的日志中查看 Swagger UI 路径。
00:00:00,000 INFO [io.qua.swa.run.SwaggerUiServletExtension] Swagger UI available at /q/swagger-ui
应用程序启动后,您可以访问 https://:8080/q/swagger-ui 并与您的 API 进行交互。
您可以可视化 API 的操作和模式。
您还可以与您的 API 进行交互,以便快速进行测试。
按 CTRL+C
停止应用程序。
样式
您可以通过提供自己的 logo 和 css 来设置 swagger ui 的样式。
Logo
要提供您自己的 logo,您需要将一个名为 logo.png
的文件放在 src/main/resources/META-INF/branding
目录下。
这将为所有 UI(不仅仅是 swagger ui)设置 logo,因此在这种情况下也包括 GraphQL-UI 和 Health-UI(如果已包含)。
如果您只想将此 logo 应用于 swagger-ui(而不是全局应用于所有 UI),请将文件命名为 smallrye-open-api-ui.png
,而不是 logo.png
。
CSS
要提供您自己的 css 来覆盖/增强 html 中的样式,您需要将一个名为 style.css
的文件放在 src/main/resources/META-INF/branding
目录下。
这将把该 css 添加到所有 UI(不仅仅是 swagger ui),因此在这种情况下也包括 GraphQL-UI 和 Health-UI(如果已包含)。
如果您只想将此样式应用于 swagger-ui(而不是全局应用于所有 UI),请将文件命名为 smallrye-open-api-ui.css
,而不是 style.css
。
有关样式的更多信息,请阅读这篇博文:https://quarkus.net.cn/blog/stylish-api/
跨域资源共享
如果您计划从运行在不同域上的单页应用程序中使用此应用程序,您将需要配置 CORS(跨域资源共享)。有关更多详细信息,请阅读“跨域资源共享”指南的CORS 过滤器部分。
配置参考
MicroProfile OpenAPI
MicroProfile OpenAPI 核心配置在 MicroProfile OpenAPI 规范中定义。有关 MicroProfile OpenAPI 注解的更多信息,请参阅 MicroProfile OpenAPI API Javadoc。
OpenAPI
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
字符串 |
|
|
如果设置,生成的 OpenAPI 架构文档将在构建时存储在此处。如果设置了此项,openapi.json 和 openapi.yaml 都将存储在此处。 环境变量: 显示更多 |
path |
|
如果正在存储文件,则为文件名。 环境变量: 显示更多 |
字符串 |
|
不要仅在启动时运行过滤器,而是在每次请求文档时运行(动态)。 环境变量: 显示更多 |
布尔值 |
|
不要包含提供的静态 openapi 文档(例如 META-INF/openapi.yaml)。 环境变量: 显示更多 |
布尔值 |
|
如果启用了管理界面,openapi 架构文档将在管理界面下发布。这允许您通过将值设置为 false 来排除 OpenAPI 的管理。 环境变量: 显示更多 |
布尔值 |
|
应扫描以包含在静态模型中的 yaml 和/或 json 文件的本地目录列表。例如: 环境变量: 显示更多 |
路径列表 |
|
添加具有配置的特定 SecurityScheme 环境变量: 显示更多 |
|
|
为生成的 OpenAPI 文档添加 Security Scheme 名称 环境变量: 显示更多 |
字符串 |
|
为 Security Scheme 添加描述 环境变量: 显示更多 |
字符串 |
|
向安全方案添加一个或多个扩展 环境变量: 显示更多 |
Map<String,String> |
|
这将自动将安全要求添加到所有具有 环境变量: 显示更多 |
布尔值 |
|
这将根据 Java 类名自动为操作添加标签。 环境变量: 显示更多 |
布尔值 |
|
这将自动为具有输入的 API 操作添加 Bad Request(400 HTTP 响应)API 响应。 环境变量: 显示更多 |
布尔值 |
|
这将根据 Java 方法名自动为操作添加摘要。 环境变量: 显示更多 |
布尔值 |
|
将其设置为 环境变量: 显示更多 |
布尔值 |
|
这将根据包含的安全扩展(如果有)自动添加安全性。 环境变量: 显示更多 |
布尔值 |
|
这将自动将 OpenAPI 规范文档端点添加到架构中。它还将“openapi”添加到标签列表中并指定“operationId”。 环境变量: 显示更多 |
布尔值 |
|
使用 环境变量: 显示更多 |
字符串 |
|
使用 环境变量: 显示更多 |
字符串 |
|
向 Basic HTTP Security Scheme 添加一个 scheme 值 环境变量: 显示更多 |
字符串 |
|
向 JWT Security Scheme 添加一个 scheme 值 环境变量: 显示更多 |
字符串 |
|
向 JWT Security Scheme 添加一个 bearer 格式 环境变量: 显示更多 |
字符串 |
|
向 OAuth2 opaque token Security Scheme 添加一个 scheme 值 环境变量: 显示更多 |
字符串 |
|
向 OAuth2 opaque token Security Scheme 添加一个 scheme 值 环境变量: 显示更多 |
字符串 |
|
向 OIDC Security Scheme 添加一个 openIdConnectUrl 值 环境变量: 显示更多 |
字符串 |
|
向 OAuth2 Security Scheme 添加一个隐式流 refreshUrl 值 环境变量: 显示更多 |
字符串 |
|
向 OAuth2 Security Scheme 添加一个隐式流 authorizationUrl 值 环境变量: 显示更多 |
字符串 |
|
向 OAuth2 Security Scheme 添加一个隐式流 tokenUrl 值 环境变量: 显示更多 |
字符串 |
|
覆盖 Schema 文档中的 openapi 版本 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的标题 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的版本 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的描述 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的服务条款 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的联系邮箱 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的联系人姓名 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的联系人 URL 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的许可证名称 环境变量: 显示更多 |
字符串 |
|
设置 Schema 文档中 Info 标签的许可证 URL 环境变量: 显示更多 |
字符串 |
|
设置自动创建 operation Id 的策略 环境变量: 显示更多 |
|
|
将此布尔值设置为 true 或 false 以启用或禁用已弃用的 环境变量: 显示更多 |
布尔值 |
|
布尔值 |
|
|
字符串列表 |
Swagger UI
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
Swagger UI 可用的路径。 不允许使用 环境变量: 显示更多 |
字符串 |
|
是否应始终包含此项。默认情况下,仅在应用程序以开发模式运行时包含此项。 环境变量: 显示更多 |
布尔值 |
|
将包含为选项的 URL。默认情况下,将使用 OpenAPI 路径。您可以在此处覆盖它,并提供多个 URL,这些 URL 将出现在 TopBar 插件中。 环境变量: 显示更多 |
Map<String,String> |
|
如果使用 urls 选项,这将是默认选中的名称。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
|
||
字符串 |
||
布尔值 |
||
控制在操作列表中显示 operationId。默认值为 false。 环境变量: 显示更多 |
布尔值 |
|
模式的默认展开深度(设置为 -1 以完全隐藏模式)。 环境变量: 显示更多 |
整数 |
|
模型示例部分中模型的默认展开深度。 环境变量: 显示更多 |
整数 |
|
控制 API 首次渲染时模式的显示方式。 环境变量: 显示更多 |
字符串 |
|
控制“尝试使用”请求的请求时长(以毫秒为单位)的显示。 环境变量: 显示更多 |
布尔值 |
|
|
||
如果设置,则启用过滤。顶栏将显示一个编辑框,您可以使用它来过滤显示的已标记操作。可以是布尔值来启用或禁用,也可以是字符串,在这种情况下,将使用该字符串作为过滤表达式来启用过滤。过滤区分大小写,匹配标签内的任何位置的过滤表达式。 环境变量: 显示更多 |
字符串 |
|
如果设置,将已标记的操作显示数量限制为最多此数量。默认是显示所有操作。 环境变量: 显示更多 |
整数 |
|
对每个 API 的操作列表应用排序。可以是“alpha”(按路径字母数字排序)、“method”(按 HTTP 方法排序)或函数(有关排序函数的工作原理,请参阅 Array.prototype.sort())。默认是服务器返回的顺序不变。 环境变量: 显示更多 |
字符串 |
|
控制操作、参数和模式的供应商扩展(x-)字段和值的显示。 环境变量: 显示更多 |
布尔值 |
|
控制参数的扩展(pattern、maxLength、minLength、maximum、minimum)字段和值的显示。 环境变量: 显示更多 |
布尔值 |
|
对每个 API 的标签列表应用排序。可以是“alpha”(按路径字母数字排序)或函数(有关如何编写排序函数,请参阅 Array.prototype.sort())。每次传递给排序器时,都会传递两个标签名称字符串。默认是 Swagger UI 确定的顺序。 环境变量: 显示更多 |
字符串 |
|
提供一种机制,以便在 Swagger UI 完成渲染新提供的定义时得到通知。 环境变量: 显示更多 |
字符串 |
|
设置为 环境变量: 显示更多 |
字符串 |
|
OAuth 重定向 URL。 环境变量: 显示更多 |
字符串 |
|
必须是函数。用于拦截远程定义、“尝试使用”和 OAuth 2.0 请求的函数。接受一个参数 requestInterceptor(request),并且必须返回修改后的请求,或者返回解析为修改后请求的 Promise。 环境变量: 显示更多 |
字符串 |
|
如果设置,则必须是 curl 命令的可用命令行选项数组。可以在 requestInterceptor 函数中针对修改后的请求进行设置。 环境变量: 显示更多 |
字符串列表 |
|
必须是函数。用于拦截远程定义、“尝试使用”和 OAuth 2.0 响应的函数。接受一个参数 responseInterceptor(response),并且必须返回修改后的响应,或者返回解析为修改后响应的 Promise。 环境变量: 显示更多 |
字符串 |
|
如果设置为 true,则使用从 requestInterceptor 返回的修改后的请求在 UI 中生成 curl 命令,否则使用应用 requestInterceptor 之前的请求。 环境变量: 显示更多 |
布尔值 |
|
启用“尝试使用”功能的 HTTP 方法列表。空数组将禁用所有操作的“尝试使用”。这不会过滤显示的操作。 环境变量: 显示更多 |
|
|
默认情况下,Swagger UI 会尝试将规范与 swagger.io 的在线验证器进行验证。您可以使用此参数设置不同的验证器 URL,例如本地部署的验证器(Validator Badge)。将其设置为 none、127.0.0.1 或 localhost 将禁用验证。 环境变量: 显示更多 |
字符串 |
|
如果设置为 true,则在浏览器发送的 CORS 请求中启用传递凭据(如 Fetch 标准中所定义)。 环境变量: 显示更多 |
布尔值 |
|
用于为模型中的每个属性设置默认值的函数。接受一个参数 modelPropertyMacro(property),property 是不可变的。 环境变量: 显示更多 |
字符串 |
|
用于为参数设置默认值的函数。接受两个参数 parameterMacro(operation, parameter)。Operation 和 parameter 是用于上下文的对象,两者都保持不变。 环境变量: 显示更多 |
字符串 |
|
如果设置为 true,它将持久化授权数据,这样在浏览器关闭/刷新时不会丢失。 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
字符串列表 |
||
字符串列表 |
||
字符串列表 |
||
OAuth 默认 clientId - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth 默认 clientSecret - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth1 Realm 查询参数,添加到 authorizationUrl 和 tokenUrl - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth 应用程序名称,显示在授权弹出窗口中 - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
用于传递范围的 OAuth 范围分隔符 - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth 范围,使用 oauthScopeSeparator 分隔 - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth 附加的查询参数,添加到 authorizationUrl 和 tokenUrl - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
字符串 |
|
OAuth 仅激活于 accessCode 流程。在向 tokenUrl 发送 authorization_code 请求时,使用 HTTP Basic Authentication 方案传递 Client Password - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
布尔值 |
|
OAuth 仅适用于授权码流程。Proof Key for Code Exchange 为 OAuth 公共客户端提供了增强的安全性 - 在 initOAuth 方法中使用。 环境变量: 显示更多 |
布尔值 |
|
预授权 Basic Auth,以编程方式为 Basic 授权方案设置 DefinitionKey - 在 preauthorizeBasic 方法中使用。 环境变量: 显示更多 |
字符串 |
|
预授权 Basic Auth,以编程方式为 Basic 授权方案设置用户名 - 在 preauthorizeBasic 方法中使用。 环境变量: 显示更多 |
字符串 |
|
预授权 Basic Auth,以编程方式为 Basic 授权方案设置密码 - 在 preauthorizeBasic 方法中使用。 环境变量: 显示更多 |
字符串 |
|
预授权 ApiKey Auth,以编程方式为 API 密钥或 Bearer 授权方案设置 DefinitionKey - 在 preauthorizeApiKey 方法中使用。 环境变量: 显示更多 |
字符串 |
|
预授权 ApiKey Auth,以编程方式为 API 密钥或 Bearer 授权方案设置 ApiKeyValue - 在 preauthorizeApiKey 方法中使用。 环境变量: 显示更多 |
字符串 |
|
如果设置为 true,这允许用户修改和测试 API 请求中的不同查询参数。 环境变量: 显示更多 |
布尔值 |
|
布尔值 |
|
|
如果 Swagger UI 已包含,则应启用/禁用它。默认情况下,如果 Swagger UI 已包含(请参阅 环境变量: 显示更多 |
布尔值 |
|