问题标签 [spray-dsl]

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 投票
0 回答
654 浏览

scala - spray - 请求参数的验证错误不会导致状态码 400 - badRequest

我有以下喷涂路线

用于转换为 TypNe 的 Java 枚举的自定义反序列化器:

和 Import case 类定义如下:

期望和预期的行为是抛出的 IllegarArgumentException 绑定到响应代码 400 - BadRequest。但我收到响应代码 500 - 内部服务器错误。

我正在使用默认拒绝处理程序

使用默认的 ExceptionHandler - 将 NonFatal 异常转换为 InternalServer 错误。

实现所需行为的最佳实践是什么?

在我看来,创建自定义 ExceptionHandler 是一种不正确的方法。我可能需要在参数指令中实现 IllegalArgumentException 到 MalformedQueryParamRejection 的转换。

任何人都可以提示如何实现它吗?

谢谢

更新:尝试了不同的方法,但也没有按预期工作。

0 投票
1 回答
290 浏览

scala - akka-http 与喷雾路由 dsl 完全兼容吗?

  1. 完全akka-http兼容spray-routing DSL?(我的服务已完全实现,spray-routing试图了解迁移的无缝性(希望只是依赖项发生变化)
  2. 准备好生产了吗?
  3. 它可以像spray有一样在tomcat上运行吗Servlet30ConnectorServlet
  4. 是否有一个如何akka-httptomcat具有类似Servlet30ConnectorServlet的容器上运行的示例
0 投票
2 回答
7140 浏览

scala - 为什么我会收到“找不到请求的资源”。访问简单的喷雾路线时?

我尝试了一个简单的喷雾示例应用程序,但无法访问该路线,我将无法使用的示例源代码上传到 github:spray-tomcat-example

我明白了

我将路线定义如下:

当然,我已经boot上课了

application.conf

SprayBoot它本身:

我很确定我遵循了所有要求我错过了什么吗?如何更新它以实际提供内容而不是“找不到请求的资源”。

0 投票
1 回答
276 浏览

scala - 锄头喷雾参数有效吗?

我正试图围绕 Spray 如何实施他们的指令,特别是参数提取 DSL。

我了解磁铁模式(几乎不了解),但我坚持 ParamDefMagnet 和 ParamDefMagnet2 如何协同工作。

我正在尝试通过以下隐式方法将 ParamDefManget2 隐式转换为 ParamDefMagnet 。

如果我打电话parameter("name"),“名称”如何隐式转换为ParamDefMagnet?如果它将它转换为ParamDefMagnet2第一个,那么value: T从哪里来将它转换为一个ParamDefMagnet

0 投票
0 回答
250 浏览

scala - spray authenticate 指令返回不同的 HTTP 状态码

我正在使用 authenticate 指令在 spray.io 1.3.2 中尝试对 post 请求进行基本身份验证。我的代码如下所示:

这工作得很好,授权状态正常 200,未授权 401。但是,当指令的顺序更改如下:

我收到状态 405,HTTP 方法不允许未经授权的访问。我不确定为什么会这样。从某种意义上说,由于缺少凭据等,路径不匹配。

有人可以澄清一下吗?

我想把授权放在 v1 级别的原因是我想让每个版本都用不同的密码保护。有没有办法实现这一目标?链接指令的最佳实践是什么?

我想遵循 DRY 原则。

谢谢

0 投票
2 回答
207 浏览

scala - 在 Spray 中处理返回 Try 值的服务

我正在开发一个代码库,其中调用我的 Spray API 需要同步调用返回 Try 的服务,Spray 需要格式化并通过 HTTP 返回。

我最初的尝试是这样的:

然而,这导致myService.run()在应用程序启动时被调用。我不确定为什么调用此方法,因为没有进行 HTTP 调用。

所以我有两个问题:

  1. 为什么在初始化路由时调用我的服务?
  2. 处理这种情况的最干净的方法是什么?想象一下,还有一些其他端点遵循类似的模式。所以我需要能够始终如一地处理这个问题。
0 投票
1 回答
1193 浏览

scala - 喷涂拒绝不转换为状态码?

我从这里遵循喷雾手册。所以我收集了非常简单的测试

我正在调用包含授权指令的路线。所以我希望拒绝将转换为 HTTP 状态代码。但这并没有发生在这里,测试失败了。

我在这里错过了一些重要的概念吗?

0 投票
1 回答
759 浏览

akka - java.lang.ClassCastException:无法将 akka.actor.Status$Success$ 转换为 akka.actor.Status$Success

我正面临一个奇怪的例外

问题出在尾随的 $ - 比如内部类左右..

我的代码如下:

因为我的演员回复如下:

我错过了任何技巧还是我在这里使用了错误的名字?

谢谢

0 投票
1 回答
151 浏览

scala - 使用scala和spray产生错误

我尝试使用 scala 和喷雾路由创建简单的 CRUD 应用程序。我有以下路线:

我是根据官方文档http://spray.io/documentation/1.2.2/spray-routing/marshalling-directives/produce/写的

MyEntity 如下(实际上并不重要):

我有以下 json-support 对象

“heavyLookupById”函数包含一些繁重的阻塞计算(假设数据库查询或 http 请求),因此我必须处理 scala 未来:

但是,如果我的未来失败了,我该怎么办?我想用诸如错误请求(400)或未找到(404)HTTP错误之类的东西来响应,但是该怎么做呢?如果我不在“heavyLookupById”中调用“func”——请求只是挂起——我相信默认服务器超时(1 分钟左右)它会失败。

0 投票
0 回答
104 浏览

scala - 为什么喷雾路由formFields采用val而不是类型

我正在尝试使用喷雾路由设置基本服务器,并希望使用一种类型来表示其中一种 PUT 形式。

我正在使用文档formFields('some, 'fields).as(Thing)中描述的符号

乍一看,我认为.as是获取一个类型并使用fromFields.

我的示例是这样构造的:

在遇到无法解析符号的相当混乱的错误后,UpdatePasswordRequest我将其从 a 更改type为 aval并且至少可以编译。

这里发生了什么?为什么它期待一个val?您甚至可以将类型作为参数传递给函数吗?