我想这可以更多地被视为参考,因为在寻找 Swagger/OpenAPI 的说明时会出现这篇文章。
我已经设置了一个示例 repo,它显示了基本用法。你可以在这里找到它:https ://gitlab.com/WaldemarLehner/nestjs-swagger-example
缺少摘要
使用@ApiOperation
-Decorator 定义 Endpoint-Description。
@ApiOperation({description: "This is the main Description of an Endpoint."})
想要手动添加请求架构
首先,请注意您有一个 GET-Endpoint。因此,对该端点的任何请求都不能有请求正文。
所以..假设您使用允许请求主体(如 POST)的 HTTP 方法,您可以使用@ApiBody
-Decorator。
在这里,您可以定义 Body-Summary、Schema(使用OpenAPI-Schema Object)或 Type(Schema 是从 Class 及其装饰器中推断出来的)。
@ApiBody({
type: PostHelloBodyDTO,
description: "The Description for the Post Body. Please look into the DTO. You will see the @ApiOptionalProperty used to define the Schema.",
examples: {
a: {
summary: "Empty Body",
description: "Description for when an empty body is used",
value: {} as PostHelloBodyDTO
},
b: {
summary: "Hello Body",
description: "Hello is used as the greeting",
value: {greeting: "Hello"} as PostHelloBodyDTO
}
}
})
进一步参考
使用以下装饰将产生如下所示的 Swagger-Document。
@ApiOperation({description: "This is the main Description of an Endpoint."})
/// Request Documentation
@ApiParam({
name: "name",
description: "This Decorator specifies the documentation for a specific Parameter, in this case the <b>name</b> Param.",
allowEmptyValue: false,
examples: {
a: {
summary: "Name is Pete",
description: "Pete can be provided as a name. See how it becomes a selectable option in the dropdown",
value: "Pete"
},
b: {
summary: "Name is Joe",
value: "Joe"
}
}
})
@ApiQuery({
name: "useExclamation",
description: "This is the description of a query argument. In this instance, we have a boolean value.",
type: Boolean,
required: false // This value is optional
})
@ApiBody({
type: PostHelloBodyDTO,
description: "The Description for the Post Body. Please look into the DTO. You will see the @ApiOptionalProperty used to define the Schema.",
examples: {
a: {
summary: "Empty Body",
description: "Description for when an empty body is used",
value: {} as PostHelloBodyDTO
},
b: {
summary: "Hello Body",
description: "Hello is used as the greeting",
value: {greeting: "Hello"} as PostHelloBodyDTO
}
}
})
/// Response Documentation
@ApiOkResponse({
description: "This description defines when a 200 (OK) is returned. For @Get-Annotated Endpoints this is always present. When, for example, using a @Post-Endpoint, a 201 Created is always present",
schema: {
type: "string",
example: "Hello, Pete!"
// For instructions on how to set a Schema, please refer to https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object-examples
}
})
@ApiBadRequestResponse({
description: "This description is for a 400 response. It is returned when additional query params are passed, or when the <b>useExclamation</b>-Argument could not be parsed as a boolean."
})
@ApiResponse({
status: 417,
description: "One can also provided a Status-Code directly, as seen here"
})
@Post(":name")
public postHello(...){...}
结果