Тело запроса не отображается в Nest. js + Swagger - PullRequest
0 голосов
/ 27 мая 2020

Мой код контроллера выглядит примерно так.

@Controller('customer')
export class CustomerController{

    constructor(private readonly customerService: CustomerService){}

    @Post('lookup')
    async someMethod(@Body() body:any){

        console.log("BEGIN -- CustomerController.someMethod");

Я ожидаю увидеть в Swagger место, где я могу ввести текст в качестве тела запроса, но вместо этого я вижу это

enter image description here

1 Ответ

2 голосов
/ 27 мая 2020

Так что, похоже, здесь происходит несколько вещей. Пользовательский интерфейс Swagger - это вспомогательный инструмент для отправки запросов, но для этого ему необходимо знать форму тела запроса. any недостаточно хорошо. Если вы ищете инструмент, который позволяет отправлять что угодно, curl или почтальон - лучший вариант (по крайней мере, бесплатно).

Nest имеет плагин Swagger , который будет читать через свой код Typescript и соответствующим образом украсить свои типы и метод, но вы должны выбрать его, чтобы включить его. В противном случае вам нужно использовать декораторы из пакета @nestjs/swagger, чтобы сообщить Swagger, какие типы ожидаются в методах и вне их.

Пока тип, который соответствует @Body(), имеет декораторы swagger или вы включаете плагин swagger. и имеют допустимый класс, пользовательский интерфейс swagger должен отображаться должным образом, но с указанным выше и с использованием типа any это не принесет вам никакой пользы.

...