2011-12-20 23 views
3

任意のの代わりに、個のパラメータを受け入れる必要がある、快適なサービスを構築しています。下記のサンプルからです。しかし、それはidsの何千もあるかもしれないことを考えると、私は安らか何なアプローチをしているん:RestTemplate複数のパラメータを持つRESTful Springサービス

restTemplate.getForObject("/start/id/{id}", null, id); 

に基づいてクライアントの実装がありますルーチン

@RequestMapping("/start/id/{id}", RequestMethod.GET) 
public void startService(@PathVariable String id) {...} 

次のサービスを質問と仮定

RestTemplateを使用して1つのリクエストですべてのパラメータを送信する私は提案を見た

  • リクエストボディをGETリクエストに追加しました - RestTemplateでは可能ではありませんか?
  • id1|id2|....|idn、例えば)、IDで区切りを使用する - 複数の追加
  • 非直感的なようで、ダブルの要求を - ハック
  • のようなIDを参照するためにGETを発行し、その後、最初のパラメータをPUTようですURLパラメータ(?id=foo&id=bar&.....&id=foobar

私は同様の質問(calling-a-restful-service-with-many-parametershow-to-create-rest-urls-without-verbscan-you-build-a-truly-restful-service-that-takes-many-parametersを)知っているが以前に頼まれましたが、私はそれは難しい土を発見することが判明しましたまたは少なくともRestTemplateに基づく回答である。

答えて

1

あなたは、すべてのIDのクエリパラメータを使用できます。

/search?ids=1,2,3,4,5,6,7 

次にコンマでトークン化と検索を行います。これをGETクエリ文字列パラメータとして指定すると、URLの最大長が上限になることに注意してください。

2

私はあなたのURL構造がコレクション全体を解決できるはずだとRESTfulデザインの部分は考えていません。あなたの最初の(リクエストパラメータ)と第3の(urlパラメータ)の提案が最も可能性が高いです。

最初にお勧めします。私はresttemplateで許可されていると確信しています。あなたが提供したドキュメントを見ると、postメソッドの1つを実装するだけです。それぞれがパラメータとしてリクエストを受け取ります。その内部には、IDを含むリクエスト本体からjson/xmlを解析するために使用できるgetRequestParameters()メソッドの実装があります。

さらに、これらのIDはどのように関連していますか?彼らはすべて共通の親リソースを持っていますか?もしそうなら、あなたは(そしておそらく必要があります)、通常のようなあなたの要求ハンドラ、IDのすべてのクエリ、およびprocede内...のような

/commonparent/{parentId} 

そしてが何かを行うことができます。

関連する問題