我在尝试
我正在使用NestJS实现一个DELETE路由。
由于该路由只在成功删除时返回一个HTTP 204 No Content
,因此使用@nestjs/swagger
装饰器,我将其注解如下:
@ApiParam({
name: 'id',
required: true,
type: 'string',
example: 'abc123',
})
@ApiNoContentResponse({
description: 'All items for the given id have been deleted',
})
@Delete('/accounts/:id/items')
async deleteItems(
@Param('id') id: string,
) {
// do stuff
}
堆栈
@nestjs/cli: 9.1.6
@nestjs/common: 9.1.6
@nestjs/core: 9.1.6
@nestjs/platform-express: 9.1.6
@nestjs/swagger: 6.1.2
嵌套-客户端. json
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"plugins": [
"@nestjs/swagger/plugin"
]
}
}
问题
如何防止生成此(默认?)响应?
发生了什么
当运行带有npm run start:dev
的服务器时,我的route的swagger描述被创建了。虽然我没有显式定义它,但是描述现在在route的Response
部分中包含了HTTP 200
的条目。该条目不包含描述,也没有指示它没有显式定义的指示符。
我所期待的
当使用npm run start:dev
运行服务器时,会创建我的路由的swagger描述。该描述只包含路由的Response
部分中的HTTP 204
条目。
我所尝试的
显式定义了一个@ApiOkResponse
:
// they all have no effect
@ApiOkResponse()
// OR
@ApiOkResponse({})
// OR
@ApiOkResponse({ status: 204 })
定义了一个@ApiDefaultResponse
:
// they all create a response 'default' with no description
@ApiDefaultResponse()
// OR
@ApiDefaultResponse({})
// OR
@ApiDefaultResponse({ status: 204 })
1条答案
按热度按时间egmofgnx1#
您可以将
@HttpCode(204)
作为注解添加到代码中。默认情况下添加200,因为这是DELETE
请求的默认响应状态代码。此默认行为将被上述注解覆盖。有关状态代码的详细信息,请访问:https://docs.nestjs.com/controllers