问题标签 [spray]

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 回答
7165 浏览

scala - 使用 spray/scala 从 post 请求中获取表单参数

我对所有这些 Scala/Spray 真的很陌生。通过一些测试,我能够使用参数函数从 Get 请求中获取参数。但是,我正在尝试获取从请求正文上的 POST 请求发送的一些参数。似乎参数函数无法获取这些值。

例如,我试图从发布请求正文中获取此值“name=john&lastname=smith”。获得这些值的最佳选择是什么?

谢谢

0 投票
2 回答
6315 浏览

scala - Scala 中间件选择之间有什么区别?

注意: 不幸的是,这个问题已关闭,但我正在努力维护它,以防其他人提出同样的问题。

我一直在寻找一个很好的解决方案来在 Scala 中开发一种介于移动设备和现有 Web 服务之间的服务。

当前可行的选项列表是:

那里可能有更多选择。一个人如何决定使用哪一个?一个好的 Scala 中间件选择的特点是什么(请原谅双关语;-)。一方面,我想选择 Akka,因为它是 TypeSafe Scala 堆栈的一部分,但另一方面,像 Finagle 这样的东西具有丰富的库集,并且使管道变得如此简单。喷雾看起来不错且易于使用。

任何建议、见解或经验将不胜感激。我敢肯定,外面的人一定对其中一些有一些经验,他们不会介意分享。

更新:

我希望重新提出这个问题。对这个问题的一个好的回答将帮助新的 Scalateers 避免相关的陷阱。

更新 2:

这些是我提出这个问题后的亲身经历:

Finagle - 我在一个项目中使用了 Finagle,它坚如磐石。

Spray - 在我的最新项目中,我正在使用 Spray,我非常高兴。最新版本是基于 Akka 2 构建的,您可以直接使用 Spray-can 库运行它,从而无需 Web 服务器。Spray 是一组库,而不是一个框架,并且非常模块化。Learn about Spray: REST on Akka 视频提供了一个很好的概述,Cakesolutions 上的这个博客展示了一个非常好的开发方法和架构。

更新 3:

生活节奏很快。如果你不时不时停下来看看周围,你可能会错过它。-费里斯·布勒

这些天来,选择变得更简单了。在我看来,Spray 赢得了这场战斗。它正在被集成到 Akka中,成为下一个 Akka HTTP。我现在已经在多个项目中使用 Spray,老实说,它是我遇到过的最棒且支持最好的软件。

这并不能回答最初的问题,但至少可以说明为什么在大多数情况下 Spray 似乎是最佳选择。它非常灵活、无阻塞且非常稳定。它有客户端和服务器端的库和一个很棒的测试工具包。此外,查看这些统计数据以了解性能:Web 框架基准

0 投票
2 回答
4207 浏览

scala - 基于演员的网络服务 - 如何正确地做到这一点?

在过去的几个月里,我和我的同事成功地构建了一个服务器端系统,用于向 iPhone 设备发送推送通知。基本上,用户通过 RESTful Web 服务( Spray-Server,最近更新为使用Spray-can作为 HTTP 层)注册这些通知,并且逻辑使用 Akka 的调度程序调度一个或多个消息以供将来调度。

我们构建的这个系统很简单:它每秒可以处理数百甚至数千个 HTTP 请求,并且可以以每秒 23,000 个的速度发送通知——如果我们减少日志输出、添加多个通知,可能会更多发送方参与者(因此与 Apple 有更多联系),并且我们使用的 Java 库 ( java-apns )中可能需要进行一些优化。

这个问题是关于如何做到这一点的权利(tm)。我的同事对 Scala 和基于 actor 的系统有更多的了解,他指出该应用程序不是一个“纯粹的”基于 actor 的系统——他是对的。我现在想知道的是如何做到这一点。

目前,我们有一个单独的 Spray HttpServiceActor,没有子类化,它使用一组指令进行初始化,这些指令概述了我们的 HTTP 服务逻辑。目前,非常简化,我们有这样的指令:

现在,如果我做对了,“等待演员的回应”在基于演员的编程中是一个禁忌(加上 !! 已弃用)。我认为“正确”的做法是在消息中将request对象传递给参与者,并在从后端接收到生成的 ID 后立即persister调用它。request.complete

我已经重写了我的应用程序中的一条路线来做到这一点;在发送给参与者的消息中,请求对象/引用也被发送。这似乎像它应该的那样工作:

我主要关心的是我们似乎将request对象传递给“业务逻辑”,在这种情况下是持久化。持久化者现在获得了额外的责任,即调用request.complete,并了解它在什么系统中运行,即它是 Web 服务的一部分。

处理这种情况的正确方法是什么,以便持久化参与者不知道它是 http 服务的一部分,并且不需要知道如何输出生成的 ID?

我认为请求仍应传递给持久化参与者,但不是持久化参与者调用 request.complete,而是将消息发送回 HttpService 参与者(一条SchedulePersisted(request, businessObjectId)消息),后者只需调用request.complete("/businessObject/%s".format(businessObjectId)). 基本上:

我用这种方法走在正确的轨道上吗?

一个较小的次要spray-server特定问题,子类HttpService化和覆盖接收方法是否可以,或者我会以这种方式破坏事情吗?(我不知道演员的子类化,或者如何将无法识别的消息传递给“父”演员)

最后一个问题,request在可能通过整个应用程序的参与者消息中传递对象/引用是一种好的方法,还是有更好的方法来“记住”在请求通过应用程序后应该发送响应的请求?

0 投票
2 回答
1181 浏览

jquery - jquery像喷雾一样生长效果

嗨,我想知道这里的喷雾页面上是否有与示例 2/演示 2 相同的 jquery 增长功能。

http://labs.adobe.com/technologies/spry/samples/effects/grow_sample.html

不想使用喷雾,因为我的大部分网站效果都使用 jquery。

谢谢!

0 投票
2 回答
225 浏览

json - 如何基于丰富动态调度?

Spray-json库使用方法扩展了基本的 Scala 类型toJson。如果底层类型存在这样的皮条客,我想将其转换Any为 a 。JsValue我最好的尝试有效,但很冗长:

理想情况下,我更喜欢这样的东西(不可能):

有没有一种方法可以做到这一点,而无需枚举已丰富的每种类型?

0 投票
1 回答
147 浏览

air - 彗星空气超时喷雾

我正在构建一个长轮询 Spray 服务器以获取相关更新的 Air 应用程序。

我是 Spray 的新手,并且读到过,如果请求没有按时处理,框架会自动向客户端发送 500 超时错误。我可以在 Air 端捕捉到这个错误,然后发送另一个请求,等等。

使用这种方法是否有任何缺点(我想不出任何缺点),还是最好避免超时并将某种“无消息”消息发送回客户端?

0 投票
2 回答
1157 浏览

scala - 如何在不使用 onComplete 嵌套的情况下链接 Future 的客户端请求?

我需要查询一个总是返回 JSON 响应的 RESTful 服务。我需要联系它几次,总是提供一些我从之前的请求中学到的更多信息。我正在使用 Akka2、Scala、Jerkson 和 Spray-Can。

我目前的方法似乎有效,但它看起来很难看,需要嵌套所有内容。我读到应该有一些关于链接等的技术可用,但我不知道如何将它们应用于我当前的用例。

这是我正在谈论的代码:

我想你可以看到模式。联系 REST 服务,阅读它,成功后将其解析为 JSON 案例类,提取信息,然后进行下一次调用。

我这里的结构只有两层深,但我还需要添加第三层。

有没有一种技术可以改进它以获得更好的可读性,或者我只能坚持这个?如果您需要任何进一步的信息,我很乐意提供。你可以在这里看到完整的代码:https ://github.com/daschl/cachakka/blob/f969d1f56a4c90a929de9c7ed4e4a0cccea5ba70/src/main/scala/com/cachakka/cluster/actors/InitialConfigLoader.scala

谢谢,迈克尔

0 投票
1 回答
727 浏览

scala - 无法运行喷雾示例

我正在使用 Spray 开始一个项目,并尝试关注他们的 wiki 以运行他们的示例应用程序(以在它们上启动我的项目)。但是,我不能让它们工作,自从编写本文档以来,spray 的 sbt 配置似乎发生了很大变化。

当我像这样被拒绝时,这些说明对我不起作用:sbt "project spray-example-simple" shell

虽然Build.scala(在同一个文件夹中)包含一个具有此名称的项目:

所以我对为什么我被 sbt 拒绝感到很不安。我尝试sbt project在其他几个文件夹上运行该命令,examples但遇到了同样的错误。我错过了什么?我对此感到非常不安Set current project to default-951202,这对我来说看起来不太好,但我不知道如何解决。

提前致谢。

0 投票
1 回答
999 浏览

scala - 将代码更改为 Scala 文件后“重新启动”Akka 的最佳方法是什么?

我正在学习 Scala 和 Spray 来提供 API,每次我对 Scala 代码进行更改时,我都必须重新启动 Akka 服务器(目前刚刚爆发然后做一个container:start. 我做错了吗?

来自脚本语言,我习惯于看到我的更改立即反映出来——但由于这是编译的,我想这是生活中的事实?

0 投票
2 回答
226 浏览

spray - 如何生成 URL 以链接回对象?

我正在尝试使用喷雾构建一些 RESTful 服务。我已经弄清楚如何构建我需要的指令。但我遇到的问题是如何可靠地生成返回到我正在使用的“资源”的 URL。注意我在这里使用术语“资源”,因为它用于 RESTful API(即通过 API 引用的服务器端对象)。

我查看了文档,除了提到 Java 意义上的“资源”(即类路径中的数据文件)之外,我没有找到任何参考资料。

当然,我可以构建一个将“/items/127”映射到服务器端资源的指令。但是我看不到如何在 Spray 中做(至少以安全和自动的方式)是如何在给定服务器端资源的情况下生成这样的 URL。我正在寻找类似于url_forFlask 框架的东西。

现在,我正在编写函数来做到这一点。但是,当然,它们很脆弱,因为它们不是 DRY(即它们在生成 URLS 时没有使用任何喷雾路由知识)。

我错过了什么吗?