问题标签 [akka-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3606 浏览

json - 如何在 Akka HTTP 中将“text/plain”解组为 JSON

我正在使用一个旧的 HTTP API(我无法更改),它在正文中以 JSON 响应,但给出了一个Content-Type: text/plain; charset=utf-8标头。

我试图将该 HTTP 正文解组为 JSON,但出现以下异常:akka.http.scaladsl.unmarshalling.Unmarshaller$UnsupportedContentTypeException: Unsupported Content-Type, supported: application/json

我的代码如下所示:

示例 HTTP 响应如下所示:

我该怎么做才能忽略Content-TypeHTTP 响应中的 并解析为 JSON?

0 投票
1 回答
4020 浏览

scala - 如何通过嵌套现有指令为 Akka-Http 2 创建自定义指令?

我正在尝试创建一个自定义指令,以后可以使用它来验证用户角色,如下所示:

或者

. 这是我到目前为止得到的:

所有编译都很好,除了我以后要使用的实际 Directive0(授权)。最里面的一行validate(...)显示一个编译错误,说“server.Directive0 类型的表达式不符合预期的 server.Route 类型”

如何正确嵌套其他指令以形成我的授权指令?或者我可以以其他方式连接它们,而不是嵌套?不幸的是,关于自定义指令的文档非常少。

[更新]

感谢 Java Anto 的指针,这就是我想出的。

这可以编译,并有望完成我正确测试它的技巧。

0 投票
1 回答
1352 浏览

scala - scala.concurrent.onComplete 和 akka.http.scaladsl.server.directives.onComplete 的区别

在 scala 并发包中,有一种onComplete方法在akka-http指令中不返回任何内容,它返回 Directive1。

这是唯一的区别吗?我有时对这两种方法感到困惑。

0 投票
2 回答
793 浏览

scala - 如何根据 Future 的结果返回不同的响应?

我的登录端点看起来大致像这样

DBManager.getUserByEmail返回Option[User]。我刚刚切换到 Slick,其中一切都是异步的,因此方法现在返回Future[User]

未来失败时如何发送所需的响应?我试过这个

它无法编译

我该如何解决?

0 投票
1 回答
3028 浏览

scala - Akka HTTP 根据 Future 的结果设置响应头

我正在使用 Akka-HTTP 2.0-M2 设计一个 REST 服务,并且遇到了一种情况,我想提供额外的标头,这些标头取决于查询的 Actor 的回复。

目前,我有以下...

虽然这返回没有问题。我想将 OncologistList 的一些属性移动到响应标头中,而不是在正文中返回它们。即,我正在返回总记录数和偏移量,并且我想生成前一个和下一个 URL 标头值以供客户端使用。我不知道如何进行。

0 投票
1 回答
171 浏览

java - 如何限制 akka 演员一次只做一项工作

我有一个基于 Java-Akka 的应用程序,其中一个 Akka 演员告诉另一个 Akka 演员做某项工作,它开始在命令提示符下做这项工作,但如果我给他 10 个工作,它会在 10 个命令提示符下一次启动所有工作. 如果我将拥有 100 多个工作,那么我的系统将被挂起。

那么我怎样才能让我的应用程序一次完成一项工作,而所有其他工作都应该以 FIFO(先进先出)的方式获得 CPU。

0 投票
1 回答
12125 浏览

scala - 具有多种路由配置的 akka-http

快速背景

我正在通过一些示例学习 Akka HTTP 堆栈以创建新的 REST 项目(完全非 UI)。我一直在使用和扩充Akka HTTP 微服务示例来处理大量用例和配置,并且对 Scala 和 Akka HTTP 的工作效果感到惊喜。

当前设置

目前我有这样的配置:

routes参数只是一个简单的值,其中包含使用 、 等的典型path数据pathPrefix

问题

有什么方法可以在多个 Scala 文件或某个地方的示例中设置路由?

我真的希望能够定义一组类来分离关注点并处理 Actor 设置和处理以处理应用程序的不同区域,并将编组留给根App扩展。

这可能是我想太多了,因为我是如何在 Java 中使用@javax.ws.rs.Path("/whatever")我的类上的注释来做事的。如果是这种情况,请随时指出思维方式的变化。

我尝试搜索几组不同的关键字,但我认为我问错了问题(例如12)。

0 投票
1 回答
3208 浏览

scala - 如何使用 Akka-Http 通用地包装拒绝

我想使用 Akka Http 路由系统及其拒绝系统,但需要将响应 Json 嵌套在通用 Json 消息块中以进行拒绝。

我以一种非常非通用的方式工作,创建一个 RejectionHandler 然后为所有可能的拒绝添加案例,并使用特定的响应代码和消息处理它们。

例子:

但是,我想要的是 Akka HTTP 默认提供的响应代码以及提供的漂亮打印消息,它只是嵌套在 Json 控件包装器中,没有针对每种可能的拒绝类型的行。这似乎应该是可能的,但我无法完成它。

0 投票
2 回答
7256 浏览

scala - Akka HTTP:将来阻塞会阻塞服务器

我正在尝试使用 Akka HTTP 对我的请求进行基本身份验证。碰巧我有一个外部资源要通过身份验证,所以我必须对该资源进行休息调用。

这需要一些时间,在处理过程中,我的 API 的其余部分似乎被阻塞,等待这个调用。我用一个非常简单的例子复制了这个:

如果我发布到日志端点,我的 get 端点也会等待 5 秒,这是日志端点规定的。

这是预期的行为吗?如果是,我如何在不阻塞整个 API 的情况下进行阻塞操作?

0 投票
1 回答
1204 浏览

akka - Akka-Http:在 POST 请求中接受 application/json

我正在尝试使用circe在 Akka-Http 应用程序中进行 JSON(反)序列化,而不是 spray-json。出于这个原因,我想使用entity指令 withas[String]来获取请求正文的字符串表示,然后进行我自己的反序列化。但它似乎entity太聪明了,它拒绝任何没有 Content-Type 的东西text/plain

我对文档的理解是,隐式魔法应该让我能够执行以下操作:

但是编译器并没有做所有的事情来推断我想要as解析为 a FromEntityUnmarshaller[String],它具有隐式方法forContentTypes,其结果应该转换为 a FromMessageUnmarshaller[String],(由于逆变)应该满足对 a 的需要FromRequestUnmarshaller[String]

但是,即使通过以下方式握住编译器:

我的服务器仍在拒绝application/json请求。

是什么赋予了?

更新

我现在可以看到我误解forContentTypes了,它只会缩小而不是扩大 Unmarshaller 将接受的 Content-Type 范围。这只是解释了为什么我的解决方案不起作用。