3

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

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

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

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

我错过了什么吗?

4

2 回答 2

1

您所要求的称为反向路由。正如@iwein 所说,Spray 中没有直接支持反向路由。您可以在此线程中从 Matthias确认这一点。这个问题有一张公开的票

但是,有一种方法基于 Marcel Mojzis 开源的 PathMatcher,您可以在此处找到。

我也有这个需求,但我将采用“已知模式”的方法,直到 Spray(或 akka-http)提出自己的解决方案来解决这个问题。本质上,我有一个对象知道如何为某些事物模式生成 URL。每个模式都是一个函数,对象的客户端必须通过其中一个函数名称来请求 url。不理想,但在 akka-http 提供更通用的解决方案之前非常简单有效。

于 2014-11-24T15:41:41.350 回答
0

我不认为 Spray 有 url_for 的等价物。我认为这在 Spray 的上下文中没有意义,因为在 Spray 中,您不是用映射到它们的 url 来注释函数,而是在创建反序列化请求并最终将它们映射到函数的路由。

因此,没有简单的方法可以从函数名称生成示例 url。

于 2014-03-22T18:42:56.287 回答