问题标签 [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.
scala - spray - 请求参数的验证错误不会导致状态码 400 - badRequest
我有以下喷涂路线
用于转换为 TypNe 的 Java 枚举的自定义反序列化器:
和 Import case 类定义如下:
期望和预期的行为是抛出的 IllegarArgumentException 绑定到响应代码 400 - BadRequest。但我收到响应代码 500 - 内部服务器错误。
我正在使用默认拒绝处理程序
使用默认的 ExceptionHandler - 将 NonFatal 异常转换为 InternalServer 错误。
实现所需行为的最佳实践是什么?
在我看来,创建自定义 ExceptionHandler 是一种不正确的方法。我可能需要在参数指令中实现 IllegalArgumentException 到 MalformedQueryParamRejection 的转换。
任何人都可以提示如何实现它吗?
谢谢
更新:尝试了不同的方法,但也没有按预期工作。
scala - akka-http 与喷雾路由 dsl 完全兼容吗?
- 完全
akka-http
兼容spray-routing
DSL
?(我的服务已完全实现,spray-routing
试图了解迁移的无缝性(希望只是依赖项发生变化) - 准备好生产了吗?
- 它可以像
spray
有一样在tomcat上运行吗Servlet30ConnectorServlet - 是否有一个如何
akka-http
在tomcat
具有类似Servlet30ConnectorServlet的容器上运行的示例
scala - 为什么我会收到“找不到请求的资源”。访问简单的喷雾路线时?
我尝试了一个简单的喷雾示例应用程序,但无法访问该路线,我将无法使用的示例源代码上传到 github:spray-tomcat-example:
我明白了
我将路线定义如下:
当然,我已经boot
上课了
在application.conf
和SprayBoot
它本身:
我很确定我遵循了所有要求我错过了什么吗?如何更新它以实际提供内容而不是“找不到请求的资源”。
scala - 锄头喷雾参数有效吗?
我正试图围绕 Spray 如何实施他们的指令,特别是参数提取 DSL。
我了解磁铁模式(几乎不了解),但我坚持 ParamDefMagnet 和 ParamDefMagnet2 如何协同工作。
我正在尝试通过以下隐式方法将 ParamDefManget2 隐式转换为 ParamDefMagnet 。
如果我打电话parameter("name")
,“名称”如何隐式转换为ParamDefMagnet
?如果它将它转换为ParamDefMagnet2
第一个,那么value: T
从哪里来将它转换为一个ParamDefMagnet
?
scala - spray authenticate 指令返回不同的 HTTP 状态码
我正在使用 authenticate 指令在 spray.io 1.3.2 中尝试对 post 请求进行基本身份验证。我的代码如下所示:
这工作得很好,授权状态正常 200,未授权 401。但是,当指令的顺序更改如下:
我收到状态 405,HTTP 方法不允许未经授权的访问。我不确定为什么会这样。从某种意义上说,由于缺少凭据等,路径不匹配。
有人可以澄清一下吗?
我想把授权放在 v1 级别的原因是我想让每个版本都用不同的密码保护。有没有办法实现这一目标?链接指令的最佳实践是什么?
我想遵循 DRY 原则。
谢谢
scala - 在 Spray 中处理返回 Try 值的服务
我正在开发一个代码库,其中调用我的 Spray API 需要同步调用返回 Try 的服务,Spray 需要格式化并通过 HTTP 返回。
我最初的尝试是这样的:
然而,这导致myService.run()
在应用程序启动时被调用。我不确定为什么调用此方法,因为没有进行 HTTP 调用。
所以我有两个问题:
- 为什么在初始化路由时调用我的服务?
- 处理这种情况的最干净的方法是什么?想象一下,还有一些其他端点遵循类似的模式。所以我需要能够始终如一地处理这个问题。
akka - java.lang.ClassCastException:无法将 akka.actor.Status$Success$ 转换为 akka.actor.Status$Success
我正面临一个奇怪的例外
问题出在尾随的 $ - 比如内部类左右..
我的代码如下:
因为我的演员回复如下:
我错过了任何技巧还是我在这里使用了错误的名字?
谢谢
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 分钟左右)它会失败。
scala - 为什么喷雾路由formFields采用val而不是类型
我正在尝试使用喷雾路由设置基本服务器,并希望使用一种类型来表示其中一种 PUT 形式。
我正在使用文档formFields('some, 'fields).as(Thing)
中描述的符号
乍一看,我认为.as
是获取一个类型并使用fromFields
.
我的示例是这样构造的:
在遇到无法解析符号的相当混乱的错误后,UpdatePasswordRequest
我将其从 a 更改type
为 aval
并且至少可以编译。
这里发生了什么?为什么它期待一个val?您甚至可以将类型作为参数传递给函数吗?