3

スプレーを使用していくつかの RESTful サービスを構築しようとしています。必要なディレクティブを作成する方法を理解しました。しかし、私が抱えている問題は、作業している「リソース」に戻る URL を確実に生成する方法です。ここでは、RESTful API (つまり、API を介して参照されるサーバー側オブジェクト) に使用される「リソース」という用語を使用します。

私はドキュメントを調べましたが、Java の意味での「リソース」(つまり、クラスパス内のデータ ファイル) の言及を除いて、これに関する参照は見つかりませんでした。

確かに、「/items/127」をサーバー側のリソースにマップするディレクティブを作成できます。しかし、Spray で (少なくとも安全で自動的な方法で) どうすればよいかわかりません。それは、サーバー側のリソースを指定してそのような URL を生成する方法です。url_forFlask フレームワークに似たものを探しています。

今のところ、これを行うための関数を書いています。しかしもちろん、それらは DRY ではないため脆弱です (つまり、URL の生成にスプレー ルーティングの知識を使用しません)。

何か不足していますか?

4

2 に答える 2

1

あなたが求めているのは、逆ルーティングとして知られています。@iwein が言ったように、Spray では逆ルーティングを直接サポートしていません。これは、このスレッドの Matthiasから確認できます。この問題には未解決のチケットがあります。

ただし、Marcel Mojzis がオープンソース化した PathMatcher に基づいたアプローチがあり、ここで見つけることができます。

私もこれを必要としていますが、Spray (または akka-http) がこの問題に対する独自の解決策を思いつくまでは、「既知のパターン」のアプローチでやり遂げるつもりです。基本的に、特定のパターンの URL を生成する方法を知っているオブジェクトがあります。各パターンは関数であり、オブジェクトのクライアントは関数名の 1 つによって URL を要求する必要があります。理想的ではありませんが、akka-http がより一般的なソリューションを提供するまでは、非常にシンプルで効果的です。

于 2014-11-24T15:41:41.350 に答える
0

スプレーには url_for に相当するものがあるとは思いません。スプレーでは、関数にマップする URL で注釈を付けていないため、Spray のコンテキストでは意味がないと思いますが、リクエストを逆シリアル化し、最終的にそれらを関数にマップするルートを作成しています。

そのため、関数の名前から URL の例を生成する簡単な方法はありません。

于 2014-03-22T18:42:56.287 に答える