Как правильно добавить файл и другие входные данные в POST api в swagger? - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь создать чванливую документацию для API загрузки файлов с помощью Nest JS.

Это то, что у меня сейчас есть в моем контроллере:

@ApiTags('files')
@Controller('files')
export class FilesController {

    @ApiConsumes('multipart/form-data')
    @ApiCreatedResponse({description: "This api creates a file in the system"})
    @Post('upload')
    @UseInterceptors(FileInterceptor('file'))
    uploadFile(@UploadedFile() file, @Body() fileInfo: UploadFileDto) {
        console.log(file);
        console.log(fileInfo);  
    }
}

и в моем DTO file:

import { IsString } from 'class-validator'
import { ApiProperty } from '@nestjs/swagger'

export class UploadFileDto {
    @IsString()
    communityName: string

    @IsString()
    type: string

    @ApiProperty({type:"file"})
    file: any;
}

Таким образом, он показывает все в чванстве (и работает) правильно. Однако, как вы можете видеть, в моем классе DTO и функциональной переменной есть избыточная "файловая" переменная. Если я удалю атрибут «файл» из DTO, пользовательский интерфейс swagger не распознает этот параметр как входной файл. Если я удалю его из параметра функции, он появится в пользовательском интерфейсе swagger, но контроллер не получит загруженный файл. Есть ли способ исправить это?

Спасибо.

...