Swagger Nest. js ValidationPipe ApiBadRequestResponse - PullRequest
0 голосов
/ 18 февраля 2020

? Я только начал играть с Swagger, и все замечательно. Я смог документировать все API в течение часа или около того, но застрял, решая одну последнюю проблему.

Как мне сказать, чтобы swagger показывал ApiBadRequestResponse в следующем формате?

@ApiOkResponse({
  type: User,
})
@ApiBadRequestResponse({
  type: {
    error: String,
    message: ValidationError[]
  }
})
@Post('/signup')
signUp(
  @Body(ValidationPipe) authCredentialsDto: CredentialsDTO
): Promise<User> {
  return this.userService.signUp(authCredentialsDto)
}

Из того, что я понимаю, Swagger не знает, как работать с интерфейсами, вместо этого я должен использовать классы. Есть ли простой способ документировать неправильный ответ на запрос, вызванный ValidationPipe. Это все нативное поведение @nestjs, поэтому я предполагаю, что должно быть простое решение.

Это то, что фактически возвращается из API:

"statusCode": 400,
"error": "Bad Request",
"message": [
  {
    "target": {
      "username": "somename",
      "password": "****"
    },
    "value": "****",
    "property": "password",
    "children": [], // ValidationError[]
    "constraints": {
      "matches": "password too weak"
    }
  }
]
...