Я настраиваю свагер-документ в моем небольшом приложении Nest. js в соответствии с этой документацией: https://docs.nestjs.com/recipes/swagger
Мой вопрос: как правильно настроить dto на показать схему в чванстве? Чтобы быть более конкретным c, вложенные типы. Он показывает только ключи верхнего уровня. Если один из ключей имеет тип чего-то, он показывает его как пустой объект. Вот что я имею в виду:
dto:
export class HealthCheckDataDto {
serverStatus: {} // dont have it typed yet;
dbStatus: MongoConnectionStateT;
}
swagger:
[
{
"serverStatus": {},
"dbStatus": {}
}
]
ожидаемый результат в примере значения swagger:
[
{
"serverStatus": {},
"dbStatus": {
"isOnline": true,
"msg": "string"
}
}
]
Это функция:
@ApiResponse({ status: 200, description: 'blabla', type: [HealthCheckDataDto] })
@ApiResponse({ status: 500, description: 'blabla, but bad', type: [HealthCheckDataDto] })
@Get('/api/healthcheck')
healthCheckApp(@Res() res: Response<HealthCheckDataDto>) {
// check HCs and setup status code
const healthCheck: HealthCheckI = this.healthcheckService.getFullHealthCheck();
const statusCode = (healthCheck.dbStatus.isOnline) ? HttpStatus.OK : HttpStatus.INTERNAL_SERVER_ERROR;
// return that response
res.status(statusCode).json(healthCheck);
}
То, что я пробовал:
- Когда я заменил тип для точных параметров в dto, он показывает это правильно в swagger.
- Я сделал перекрестную проверку dto на интерфейс, где я добавил неправильное поле в 'isOnline', и он находит его и отмечает, что это не хорошо.
- Схема отображается в чванстве, но также только верхний уровень, а не набранная часть. Так что это не просто пример стоимости.
- Проверено SO :) Найдены две связанные темы, но не решена. Один предложил создать manulaly sub-dtos вместо типов. Ну ... лучше нет.
Я делаю что-то не так или что-то упустил в документации. Или, возможно, синтаксический анализатор этого модуля swagger не может извлечь тип / интерфейс при генерации json. Не знаю.
Кто-нибудь есть идеи, пожалуйста?
Спасибо!