当前位置: 首页 > 知识库问答 >
问题:

为什么Akka HTTP与我的JSON体不匹配?

孙风畔
2023-03-14
final case class LeaderboardPostRequest(name: String, kind: String)
final case class LeaderboardPostResponse(name: Option[String], id: String)

trait JsonSupport extends SprayJsonSupport with DefaultJsonProtocol {
  implicit val requestFormat = jsonFormat2(LeaderboardPostRequest)
  implicit val responseFormat = jsonFormat2(LeaderboardPostResponse)
}

class LeaderboardEndpoint extends Directives with JsonSupport {
. . .
  def leaderboardPost(name: Option[String]): Route =
    post {
      logRequest("leaderboard", Logging.InfoLevel) {
        entity(as[LeaderboardPostRequest]) { leaderboard =>
          try {
            complete(leaderboardCreate(Some(leaderboard.name), Some(leaderboard.kind)))
          } catch {
            case cause: LeaderboardException => complete(cause.getHttpResponse)
            case cause: Throwable =>
            complete(HttpResponse(InternalServerError, entity = s"Exception thrown from LeaderboardPost: ${cause.getMessage}"))
          }
        } ~
        complete(HttpResponse(BadRequest, entity = "****body missing****"))
    }
  }
. . .
}
HttpRequest(HttpMethod(POST),http://localhost:8080/leaderboard?name=foo,List(User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-CA) WindowsPowerShell/5.1.17763.134, Host: localhost:8080, Timeout-Access: <function1>),HttpEntity.Strict(application/json,{name="foo",kind="ConcurrentLeaderboard"}),HttpProtocol(HTTP/1.1))
 ****body missing****

我怀疑这是一些简单的东西,但我被封锁了,无法弄清楚需要什么额外的魔法。如能提供帮助/建议/提示,将不胜感激。

共有1个答案

齐建白
2023-03-14

我认为可能有几个(可能交叉的)问题:

>

  • 从日志消息中看到的是路由的path没有配置,请参考路径指令文档。

    可能您误用了logrequest方法。参数值“leaderbord”只是日志的一些标记,至少这是logRequest指令文档所说的

  •  类似资料:
    • 我有这样的Jpa存储库:

    • 问题内容: 我在asp.net项目的Content文件夹中有一个json文件: …以及访问它的代码: …但是调用代码时什么也没发生;浏览器控制台说:“无法加载资源:服务器响应状态为404(未找到)” 为什么找不到?“波浪号文件名”不是通往文件的正确路径吗? 更新 我还尝试了向后“重击”: …并且得到相同的结果(“ 无法加载资源:服务器以404(未找到)状态进行响应 ”) 更新2 然后,我尝试了这种

    • 输出: 种皮 测试[ 测试B 问题:为什么?字符类[a-zA-Z]应该只匹配字母字符a到z和A到Z。

    • 到目前为止,我有这个: 和这个: 当我测试这个时,它不能采取双倍数字,我收到这个消息: 我该如何解决这个问题?

    • 我不知道为什么这个正则表达式不匹配。也许你能发现错误。 ficontents: 我想匹配>>>>>>客户端9462<<<<<捕获该号码,以及此后的所有内容,直到另一个客户端号码。所以我的第一个捕获是“9462”,第二个捕获是“Had a program exception;please check the error log”。 它使用JavaScript设置在regex101.com中工作得很好

    • 我已经集成了Twilio,它工作得很好。现在我想捕获所有中间消息状态。我指的是发送信息。 我的代码看起来像- 但是返回到statusCallback的输出/响应是不同的,因为- 但是我需要在发送消息时定义的响应 对我来说,字段-num_segments、date_send、direction、error_code、error_message很重要,但我没有收到这些字段。我是否需要使用TWILIO的