akka-http:如何设置响应头

时间:2015-09-07 04:18:59

标签: scala routes akka spray akka-http

我的路线如下:

val route = {
    logRequestResult("user-service") {
      pathPrefix("user") {
        get {
          respondWithHeader(RawHeader("Content-Type", "application/json")) {
            parameters("firstName".?, "lastName".?).as(Name) { name =>
              findUserByName(name) match {
                case Left(users) => complete(users)
                case Right(error) => complete(error)
              }
            }
          }
        } ~
          (put & entity(as[User])) { user =>
            complete(Created -> s"Hello ${user.firstName} ${user.lastName}")
          } ~
          (post & entity(as[User])) { user =>
            complete(s"Hello ${user.firstName} ${user.lastName}")
          } ~
          (delete & path(Segment)) { userId =>
            complete(s"Hello $userId")
          }
      }
    }
  }

我的回复内容类型应始终为application/json,因为我已为get请求设置了回复。但是,我在测试中得到的是text/plain。如何在响应中正确设置内容类型?

另一方面,akka-http文件是我见过的最无价值的垃圾之一。几乎每个示例代码的链接都被破坏了,他们的解释只是说明了。 Javadoc没有代码示例,我无法在Github上找到他们的代码库,因此从他们的单元测试中学习也是不可能的。

1 个答案:

答案 0 :(得分:9)

我发现this 一个帖子中写着“在sp / akka-http中,某些标题会被处理特别”。显然,内容类型是其中之一,因此无法在上面的代码中进行设置。我们必须创建一个具有所需内容类型和响应正文的$(function () { $('#graphic img').hide(); $.ajax({ url: 'About.aspx', dataType: 'text', type: "GET", success: function (data) { var result = $.trim(data); if (result == 2) { $("#gate1").show(); } else if (result == 3) { $("#gate2").show(); } //you can put more options here or just use else condition instread of else if } }); }); 。有了这些知识,当我按照以下方式更改HttpEntity指令时,就可以了。

get