You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NestJS的Swagger定义中阻止默认HTTP 200响应生成?

解决NestJS Swagger DELETE路由默认生成200响应的问题

问题核心:NestJS Swagger插件会根据方法的返回类型自动推断响应状态码,async方法默认返回Promise<any>,因此会自动生成200响应,即使你已经添加了@ApiNoContentResponse。

解决步骤

  1. 明确方法返回类型为void
    让Swagger插件明确知道该方法没有返回内容,避免自动推断200响应。

  2. 添加@HttpCode注解指定响应状态码
    强制接口返回204状态码,同时让Swagger插件识别到正确的响应状态。

修改后的代码示例

import { HttpCode, HttpStatus } from '@nestjs/common';
import { ApiParam, ApiNoContentResponse } from '@nestjs/swagger';

@ApiParam({
  name: 'id',
  required: true,
  type: 'string',
  example: 'abc123',
})
@ApiNoContentResponse({
  description: '指定ID下的所有条目已删除',
})
@HttpCode(HttpStatus.NO_CONTENT)
@Delete('/accounts/:id/items')
async deleteItems(@Param('id') id: string): Promise<void> {
  // 执行删除逻辑,无需返回任何内容
}

额外说明

  • 确保@nestjs/swagger/plugin已正确在nest-cli.json中启用(你的配置已经满足),插件会根据返回类型和@HttpCode注解生成正确的Swagger文档。
  • 如果需要添加其他错误响应(比如404),可以补充@ApiResponse注解,例如:
    @ApiResponse({ status: 404, description: '指定ID的账户不存在' })
    

内容的提问来源于stack exchange,提问作者MaxRumford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:35:19