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

使用Akka HTTP(正式称为Spray)查询GET请求的参数

胡承载
2023-03-14

Akka HTTP(正式名称为Spray)的一个特性是它能够自动地将数据从json封送和反封送到case类等中。

val httpResponse: Future[HttpResponse] =
  Http().singleRequest(HttpRequest(
    uri = s"""http://${config.getString("http.serverHost")}:${config.getInt("http.port")}/""" +
          s"query?seq=${seq}" +
          s"&max-mismatches=${maxMismatches}" +
          s"&pam-policy=${pamPolicy}"))
val httpResponse: Future[HttpResponse] =
  Http().singleRequest(HttpRequest(
    uri = s"""http://${config.getString("http.serverHost")}:${config.getInt("http.port")}/query""",
    entity = QueryParams(seq = seq, maxMismatches = maxMismatches, pamPolicy = pamPolicy)))

(我知道,如果我将它从GET改为POST,我可能会使它更像我希望的那样工作,这样我就可以将POST请求的内容从case类自动转换为json,但我并不希望在这里这样做。)

共有1个答案

潘泳
2023-03-14

您可以利用URI类来执行您想要的操作。它提供了多种方法来使用withquery方法将一组参数获取到查询字符串中。例如,可以执行以下操作:

val params = Map("foo" -> "bar", "hello" -> "world")
HttpRequest(Uri(hostAndPath).withQuery(params))

HttpRequest(Uri(hostAndPath).withQuery(("foo" -> "bar"), ("hello" -> "world")))
 类似资料:
  • 直接在url跟参数 如接口URL为:http://localhost:8080/api 则完整地址为: http://localhost:8080/api?name=doc.result.5&version=&app_key=test&data=%257B%2522goods_name%2522%253A%2522iphoneX%2522%257D&timestamp=2018-06-22%200

  • 问题内容: 我试图通过cURL从命令提示符向远程REST API发送“ GET”请求,如下所示: 但它不返回任何输出。我尝试直接从浏览器ping URL,我能够成功获得响应,但我不知道该命令出了什么问题。 基本上,我想为远程REST服务设置一个“ GET”请求,该请求通过curl向我提供json数据作为响应。谁能指导我我在做什么错?我尝试了各种帖子,但是所有人都在谈论POST请求而不是GET。 问

  • 我正在尝试通过cURL从命令提示符向远程REST API发送“GET”请求,如下所示: 但它没有返回任何输出。我尝试直接从浏览器ping URL,我能够成功得到响应,我不明白命令有什么问题。 基本上,我想向远程REST服务设置一个“GET”请求,该服务通过curl向我提供json数据作为响应。有人能告诉我我犯了什么错误吗?我尝试了各种帖子,但都谈论POST请求,而不是GET。

  • 将jwt(json web令牌)作为GET请求的查询参数放入url是否安全?

  • 我正在使用Tomcat 8。在一种情况下,我需要处理来自外部源的外部请求,其中请求有一个参数,由分隔。 请求如下所示: 在这种情况下,我得到以下错误。 编辑1 它适用于ApacheTomcat 8.0.30,但不适用于Tomcat 8.5

  • 问题内容: 在swift 3中建议使用带参数的GET的哪种方法? 范例: 提前致谢 ! 问题答案: 示例如何使用请求。