首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala - tapir动态状态码类型不匹配

Scala - tapir动态状态码类型不匹配
EN

Stack Overflow用户
提问于 2019-11-26 10:11:42
回答 1查看 600关注 0票数 1

我在tapir中创建一个端点,它要求错误输出的动态状态代码。

我已经声明了海豹特征FailureResponse,并创建了扩展此特性的案例类。类似于示例所示的https://tapir-scala.readthedocs.io/en/latest/endpoint/statuscodes.html

模型

代码语言:javascript
复制
object AuthenticationModel {

  case class Request(productId: String)

  case class SuccessResponse(success: Boolean, status: Int, data: Token, message: String)

  sealed trait FailureResponse
  case class FailureResponse400(success: Boolean, status: Int = 400, errors: Array[Error], message: String) extends FailureResponse
  case class FailureResponse401(success: Boolean, status: Int = 401, errors: Array[Error], message: String) extends FailureResponse
  case class FailureResponse422(success: Boolean, status: Int = 422, errors: Array[Error], message: String) extends FailureResponse
  case class FailureResponse500(success: Boolean, status: Int = 500, errors: Array[Error], message: String) extends FailureResponse

  case class Token(token: String)
  case class Error(code: String, message: String)

}

端点

代码语言:javascript
复制
object Auth {

  val authenticationEndpoint : Endpoint[AuthenticationModel.Request, AuthenticationModel.FailureResponse, AuthenticationModel.SuccessResponse, Unit] = endpoint
    .tag("Auth")
    .description("Generates an idcheck token using product id")
    .post
    .in("auth")
    .in(jsonBody[AuthenticationModel.Request])
    .out(jsonBody[AuthenticationModel.SuccessResponse])
    .errorOut(oneOf(
      statusMapping(StatusCode.BadRequest, jsonBody[AuthenticationModel.FailureResponse400]),
      statusMapping(StatusCode.Unauthorized, jsonBody[AuthenticationModel.FailureResponse401]),
      statusMapping(StatusCode.UnprocessableEntity, jsonBody[AuthenticationModel.FailureResponse422]),
      statusMapping(StatusCode.InternalServerError, jsonBody[AuthenticationModel.FailureResponse500]),
    ))

}

我已经将错误输出参数类型设置为AuthenticationModel.FailureResponse

但是我得到了一种错误的匹配

Required AuthenticationModel.FailureResponse找到了带有可序列化

的产品的AuthenticationModel.FailureResponse

EN

回答 1

Stack Overflow用户

发布于 2020-03-23 14:46:03

解决方案在错误消息中:

只需改变你的

sealed trait FailureResponse

sealed trait FailureResponse extends Product with Serializable

我希望你已经解决了这个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59048475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档