What I'm trying
I'm implementing a DELETE route using NestJS.
Since the route is only ever supposed to return a HTTP 204 No Content
on successful deletion, utilizing the @nestjs/swagger
decorators, I've annotated it as follows:
@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
}
Stack
@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
nest-cli.json
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"plugins": [
"@nestjs/swagger/plugin"
]
}
}
Question
How can I prevent this (default?) response from being generated?
What happens
When running the server with npm run start:dev
, the swagger description for my route is created. Although I've not explicitly defined it, the description now contains an entry for HTTP 200
in the Response
section of the route. The entry contains no description and no indicator that it's not explicitly defined.
What I expected to happen
When running the server with npm run start:dev
, the swagger description for my route is created. The description only contains and entry for HTTP 204
in the Response
section of the route.
What I've tried
Explicitly defined an @ApiOkResponse
:
// they all have no effect
@ApiOkResponse()
// OR
@ApiOkResponse({})
// OR
@ApiOkResponse({ status: 204 })
Defined an @ApiDefaultResponse
:
// they all create a response 'default' with no description
@ApiDefaultResponse()
// OR
@ApiDefaultResponse({})
// OR
@ApiDefaultResponse({ status: 204 })