Укажите тип возвращаемого содержимого контроллера - PullRequest
0 голосов
/ 15 сентября 2018

В качестве файла 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();
  }
}

Однако Swagger неверно указывает Тип содержимого ответа из application / json , когдафактический результат - текст / простой текст :

Screen shot of output

Я попытался просмотреть документы Swagger относительно описания ответов и элемент Iищу это часть контента.Однако этот документ не распространяется на аннотации 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

Какая правильная аннотация для указания Тип содержимого ответа из текст / обычный

1 Ответ

0 голосов
/ 15 сентября 2018

Я обнаружил, что решение import ApiProduces from '@nestjs/swagger' примерно так:

import { ApiOperation, ApiResponse, ApiUseTags, ApiProduces } from '@nestjs/swagger'

//...

    @ApiProduces('text/plain')
    public getMetrics(): string {
        //...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...