指定Controller的返回内容类型

Eri*_*sey 5 node.js swagger typescript

我有以下文件metrics.controller.ts

import { Controller, Get } from '@nestjs/common';
import { ApiOperation, ApiResponse, ApiUseTags, ApiModelProperty } from '@nestjs/swagger';
import { PrometheusService } from './prometheus.service';

@Controller('metrics')
@ApiUseTags('Misc')
export class MetricsController {
  constructor(private readonly prometheusService: PrometheusService) {}

  @Get('/')
  @ApiOperation({
    title: 'Prometheus metrics',
    description: 'Exposes default prometheus node metrics'
  })
  @ApiResponse({ status: 200, description: 'Prometheus metrics' })
  public getMetrics(): string {
    return this.prometheusService.getMetrics();
  }
}
Run Code Online (Sandbox Code Playgroud)

然而,当实际输出为text/plain时,Swagger 错误地指示了application/json响应内容类型

输出的屏幕截图

我尝试查看有关描述响应的 Swagger 文档,我正在寻找的项目是“内容”部分。但是,该文档不涵盖 TypeScript 注释。Swagger Core 2.X 文档讨论了@Operation注释,但我没有对此的参考,而且我不知道从哪里可以获得一个注释——只能@ApiOperation使用。

项目目录下的相关版本信息npm ls如下:

+-- @nestjs/swagger@2.5.1
| +-- @nestjs/common@5.3.6 deduped
| +-- @nestjs/core@5.3.6 deduped
| +-- lodash@4.17.10
| +-- path-to-regexp@2.2.1 deduped
| `-- swagger-ui-express@3.0.10
Run Code Online (Sandbox Code Playgroud)

指示text/plain响应内容类型的正确注释是什么?