Swagger документация с multipart / form-data и @ApiImplicitBody - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать действие контроллера, которое должно загрузить некоторые файлы и сохранить их с некоторыми строками в базе данных. Для загрузки файлов я использую FileFieldsInterceptor и для других строк данных DTO. Оно работает. Но я хочу задокументировать эту конечную точку, и она не работает. Для файлов я могу использовать @ApiImplicitFile с @ApiConsumes('multipart/form-data'), но для других параметров тела я пытаюсь использовать @ApiImplicitBody decorator, и приложение вылетает с ошибкой в ​​api-parameters.explorer.js.

Как можно записать параметр тела (кроме файла) в multipart/form-data модулем @nestjs/swagger?

@Post()
@ApiOperation({ ...config.api.post })
@ApiConsumes('multipart/form-data')
@ApiImplicitFile({ name: 'file', required: true, description: 'Infographic file' })
@ApiImplicitFile({ name: 'file_preview', required: true, description: 'Infographic preview file' })
@ApiImplicitBody({ name: 'name', required: true, description: 'Infographic title', type: 'string' })
@UseInterceptors(FileFieldsInterceptor([
        { name: 'file', maxCount: 1 },
        { name: 'file_preview', maxCount: 1 },
    ],
    {
        storage: storageUpload('infographics'),
        limits: {
            fileSize: 20971520, // 20Mb
        },
        fileFilter: (req, file, cb) => {
            const mimeTypeList = ['image/png', 'image/jpeg', 'application/pdf'];

            return mimeTypeList.some(item => item === file.mimetype)
                ? cb(null, true)
                : cb(null, false);
        },
    },
  ), new FilesValidationInterceptor())
upload(@UploadedFiles() files, @Body() createDto: CreateInfographicsDto) {
    return this.infographicsService.create(files, createDto);
}

1 Ответ

0 голосов
/ 17 января 2019

Error

Вы должны использовать String вместо 'string' для типа:

@ApiImplicitBody({ name: 'name', description: 'Infographic title', type: String })
                                                                         ^^^^^^


Данные формы

Документирование параметров данных формы еще не поддерживается @ nestjs / swagger в соответствии с этой проблемой github . Уже существует запрос на извлечение , который бы добавил эту функцию, но она еще не объединяется. Вы можете подписаться на него, чтобы получать уведомления при обновлении статуса.

...