如何生成链接回对象的URL?

时间:2012-09-19 19:04:53

标签: spray

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

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

我确实可以建立一个映射" / items / 127"到服务器端的资源。但是我在Spray中看不到如何做(至少以安全和自动的方式)是如何在给定服务器端资源的情况下生成这样的URL。我正在寻找Flask框架中与url_for类似的东西。

目前,我正在编写函数来执行此操作。但是,当然,它们很脆弱,因为它们不会干(即它们不会在生成URL时使用任何喷涂路由知识)。

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您要求的内容称为反向路由。正如@iwein所说,在Spray中没有直接支持反向路由。您可以从Matthias in this thread确认。有open ticket for this issue

但是,有一种方法,基于PathMatcher,Marcel Mojzis开源,您可以找到here

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

答案 1 :(得分:0)

我不认为Spray有相同的url_for。我不认为它在Spray的上下文中是有意义的,因为在Spray中你没有使用映射到它们的url注释函数,但是你创建的路径反序列化请求并最终将它们映射到函数。

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