Как получать сообщения об ошибках / исключения из REST API, используя сгенерированный Swagger клиентский код? - PullRequest
0 голосов
/ 12 ноября 2018

Ниже приведен фрагмент кода Scala, сгенерированный Swagger Codegen.

  def v4TestPostCheck(payload: TestResourceEntityRequest ): Option[TestResource] = {
    val await = Try(Await.result(v4TestPostAsync(payload), Duration.Inf))
    await match {
      case Success(i) => Some(await.get)
      case Failure(t) =>  None
    }
  }

  def v4TestPostAsync(payload: TestResourceEntityRequest): Future[TestResource] = {
    helper.v4TestPost(payload)
  }


  def v4TestPost(payload: TestResourceEntityRequest)(implicit reader: ClientResponseReader[TestResource], writer: RequestWriter[TestResourceEntityRequest][]): Future[TestResource] = {
    // create path and map variables
    val path = (addFmt("/v4/test"))

    // query params
    val queryParams = new mutable.HashMap[String, String]
    var headerParams = new mutable.HashMap[String, String]

    headerParams = ApiInvoker.defaultHeaders
    val resFuture = client.submit("POST", path, queryParams.toMap, headerParams.toMap, writer.write(payload))
    resFuture flatMap { resp =>
      println("response:"+resp.status)
      println(resp.body)
      println(resp.statusText) // this is printing the error message sent by Service, but how to return this message from this method
      println(resp.uri)

      Try {process(reader.read(resp))} match {
        case Success(obj) => obj
        case Failure(_) => throw new Exception("")
      }
    }

  }

В случае успеха этот код успешно получает объект TestResource. Однако в случае любой ошибки / BadRequest, он получает пустой объект TestResource. Вместо этого он должен сообщить об ошибке, выданной службой. Как мы можем перехватить эти сообщения, используя сгенерированный код?

...