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

AKKA-HTTP:在POST请求中接受Application/JSON

南宫鸿晖
2023-03-14

我正在尝试使用circe在Akka-Http应用程序中执行我的JSON(de)序列化,而不是Spray-JSON。因此,我想使用Entity指令和作为[String]来获取请求主体的字符串表示,然后执行自己的反序列化。但是Entity似乎太聪明了,它拒绝任何内容类型不为text/plain的东西。

import akka.http.scaladsl.model.ContentTypes
entity(as[String].forContentTypes(ContentTypes.`application/json`))
val jsonRequestToStringUnmarshaller: FromRequestUnmarshaller[String] = 
  messageUnmarshallerFromEntityUnmarshaller(implicitly[FromEntityUnmarshaller[String]].forContentTypes(ContentTypes.`application/json`))
entity(jsonRequestToStringUnmarshaller)

我现在明白了,我误解了forContentTypes,它只会缩小而不会扩大解封程序将接受的内容类型范围。这就解释了为什么我的解决方案不起作用。

共有1个答案

曹钊
2023-03-14

我建议为Akka-Http提供直接封送器--使用circe隐藏的从/到所需类型的反封送器。

可能类似于:https://github.com/pdxostc/rvi_sota_server/blob/master/common/src/main/scala/org/genivi/sota/marshalling/circemarshallingsupport.scala

 类似资料:
  • 我想使用akka-http-client作为流来链式http请求。链中的每个http请求都依赖于前一个请求的成功/响应,并使用它来构造一个新的请求。如果一个请求不成功,流应该返回不成功请求的响应。 如何在AKKA-HTTP中构造这样的流?我应该使用哪一个akka-http客户端级别的API?

  • 问题内容: 我正在尝试允许javascript与Node.js服务器通信。 POST请求(Web浏览器) 现在,Node.js服务器代码如下所示。在用于GET请求之前。我不确定如何使其与POST请求一起使用。 服务器(Node.js) 在此先感谢您的帮助。 问题答案: 以下代码显示了如何从HTML表单读取值。正如@pimvdb所说,您需要使用request.on(’data’…)来捕获正文的内容。

  • 我想创建一个FastAPIendpoint,它只接受任意发布请求正文并返回它。 如果我发送,我想得到。但我也希望能够发送并取回它。 我试过了: 但是无论我发送什么,这都会返回一个空字典。 有什么想法吗?

  • 希望在Mulesoft HTTP请求中实现以下功能 卷曲“https://somedomain.com/1/1/1/search“ -X POST -H”授权:承载令牌”

  • 我正在尝试学习RESTfulWeb服务。我正在创建一组简单的web服务。我开始在邮局工作时被卡住了。 我想将JSON输入传递给POST方法。这是我在代码中所做的: 我在POM. xml中包含了Jackson。 MyCls是一个简单的类,包含一些getter和setter。 我从chrome的简单REST客户端调用上述POST服务。 我看到以下答复: 我尝试在REST客户端的POST请求中添加标头为