如何在芬奇中绑定请求正文

Xiaohe Dong

这是将请求参数绑定到路由器的代码。

val testReader: Endpoint[Test] = Endpoint.derive[Test].fromParams
val test: Endpoint[String] = post("test" ? testReader) { t : Test => {
    Created("OK")
  }}

我正在使用该方法fromParams该方法可以以非常酷的方式绑定请求参数。但是,我不知道我可以在雀科中绑定请求正文的哪种相似方式

提前谢谢了

特拉维斯·布朗(Travis Brown)

为了提供一个完整的工作示例,我将假设一个case类,如下所示:

case class Test(foo: Int, bar: String)

和一些这样的要求:

import com.twitter.finagle.http.{ Method, Request, RequestBuilder }
import com.twitter.io.{ Buf, Reader }

val queryParamPost = Request(Method.Post, "/test?foo=1&bar=whatever")

val testJsonBuf = Buf.Utf8("""{ "foo": 1, "bar": "whatever" }""")

val bodyPost = RequestBuilder().url("http://localhost:8080/test").buildPost(testJsonBuf)

现在,当您编写以下内容时...

import io.finch._

val testParams: Endpoint[Test] = Endpoint.derive[Test].fromParams
val test: Endpoint[Test] = post("test" ? testParams) { test: Test =>
  Created(test)
}

发生的情况是Finch使用泛型派生(由Shapeless支持)确定(在编译时)如何将查询参数解析为a Test然后,您可以像这样测试端点:

import io.finch.circe._
import io.circe.generic.auto._

test.toService.apply(queryParamPost).onSuccess { response =>
  println(s"$response: ${ response.contentString }")
}

将打印:

Response("HTTP/1.1 Status(201)"): {"foo":1,"bar":"whatever"}

在这里,我使用Circe的通用派生Test为响应自动将“创建的”编码为JSON。

您还可以使用Circe派生请求主体的读者:

val testBody: Endpoint[Test] = body.as[Test]
val test2: Endpoint[Test] = post("test" :: testBody) { test: Test =>
  Created(test)
}

这几乎与test上面的完全一样,但是我们正在使用bodyEndpoint[String]读取请求主体,然后as指定我们希望将内容解析为JSON并解码为Test值。我们可以像这样测试这个新版本:

test2.toService.apply(bodyPost).onSuccess { response =>
  println(s"$response: ${ response.contentString }")
}

我们将再次得到我们期望的答案。

通常,当你想读某一种传入的请求的信息,您可以使用基本的一个Endpoint由芬奇提供S(参见该文档的完整列表),然后用类似的方法asmap等上在Endpoint把它变成你所需要的形状。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Elasticsearch 中减少请求正文

来自分类Dev

如何在Slim中访问POST请求的JSON请求正文?

来自分类Dev

如何在Play中的每个请求中记录正文?

来自分类Dev

您如何在rAML中引用示例请求正文?

来自分类Dev

如何在Express中读取请求正文动态属性?

来自分类Dev

如何在Laravel中获取HTTP请求正文内容?

来自分类Dev

如何在Express中读取请求正文的动态属性?

来自分类Dev

您如何在rAML中引用示例请求正文?

来自分类Dev

如何在Matlab中设置http发布请求的正文

来自分类Dev

如何在 ruby CGI 脚本中访问原始请求正文?

来自分类Dev

如何在单元测试中验证Flurl Http中的请求正文内容?

来自分类Dev

如何从POST请求中读取正文

来自分类Dev

如何使用 httptools 从请求中获取正文?

来自分类Dev

如何在Spring Boot Filter中获取HTTP请求正文内容?

来自分类Dev

如何在django drf中检查请求正文中的int值

来自分类Dev

如何在django drf中检查请求正文中的int值

来自分类Dev

如何在JAX-RS客户端中记录请求正文

来自分类Dev

Java-如何在Rest Post方法中传递XML请求正文

来自分类Dev

如何在Google Cloud Functions中获取HTTP请求正文大小?

来自分类Dev

如何在Pre-request脚本中验证POST请求正文所需的参数?

来自分类Dev

如何在django drf中检查请求正文中的int值

来自分类Dev

如何在同一Web服务中获取@PathParam和请求正文?

来自分类Dev

如何在Java过滤器中更改servlet请求正文?

来自分类Dev

如何在 Beanshell 预处理器中获取 HTTP POST 请求正文?

来自分类Dev

如何在具有路由属性的WebAPI GET请求中绑定请求模型?

来自分类Dev

如何在具有路由属性的WebAPI GET请求中绑定请求模型?

来自分类Dev

如何在Handler中正确读取POST请求正文?

来自分类Dev

如何在Python的POST请求中将查询作为正文发送

来自分类Dev

如何在HTTP请求正文中发送'&'字符?

Related 相关文章

  1. 1

    如何在 Elasticsearch 中减少请求正文

  2. 2

    如何在Slim中访问POST请求的JSON请求正文?

  3. 3

    如何在Play中的每个请求中记录正文?

  4. 4

    您如何在rAML中引用示例请求正文?

  5. 5

    如何在Express中读取请求正文动态属性?

  6. 6

    如何在Laravel中获取HTTP请求正文内容?

  7. 7

    如何在Express中读取请求正文的动态属性?

  8. 8

    您如何在rAML中引用示例请求正文?

  9. 9

    如何在Matlab中设置http发布请求的正文

  10. 10

    如何在 ruby CGI 脚本中访问原始请求正文?

  11. 11

    如何在单元测试中验证Flurl Http中的请求正文内容?

  12. 12

    如何从POST请求中读取正文

  13. 13

    如何使用 httptools 从请求中获取正文?

  14. 14

    如何在Spring Boot Filter中获取HTTP请求正文内容?

  15. 15

    如何在django drf中检查请求正文中的int值

  16. 16

    如何在django drf中检查请求正文中的int值

  17. 17

    如何在JAX-RS客户端中记录请求正文

  18. 18

    Java-如何在Rest Post方法中传递XML请求正文

  19. 19

    如何在Google Cloud Functions中获取HTTP请求正文大小?

  20. 20

    如何在Pre-request脚本中验证POST请求正文所需的参数?

  21. 21

    如何在django drf中检查请求正文中的int值

  22. 22

    如何在同一Web服务中获取@PathParam和请求正文?

  23. 23

    如何在Java过滤器中更改servlet请求正文?

  24. 24

    如何在 Beanshell 预处理器中获取 HTTP POST 请求正文?

  25. 25

    如何在具有路由属性的WebAPI GET请求中绑定请求模型?

  26. 26

    如何在具有路由属性的WebAPI GET请求中绑定请求模型?

  27. 27

    如何在Handler中正确读取POST请求正文?

  28. 28

    如何在Python的POST请求中将查询作为正文发送

  29. 29

    如何在HTTP请求正文中发送'&'字符?

热门标签

归档