0

春のハテオアスを使って休憩サービスを作っています。REST API を介して公開しているデータベース エンティティがあります。簡単にするために、次の 3 つのフィールドを持つエンティティがあるとします。

  • id- 一意の識別子
  • service- このアイテムが属するサービス
  • value- このアイテムの数値属性

次の URL スキーマを実装しようとしています。

@RequestMapping(value = "")- すべてのアイテムのコレクションを返す-
@RequestMapping(value = "/{id}")これで特​​定のアイテムをid @RequestMapping(value = "/{service}")返す - これですべてのアイテムのコレクションを返すservice

@RequestMappingここでの問題は、2 番目と 3 番目のパスがあいまいであり、たとえば以下の URL を試してみると、 Spring がどちらに一致するかがわからないことです。

http://localhost/123

どうすればこれに対処できますか?

4

3 に答える 3

3
@RequestMapping(value = "/{id}") 
@RequestMapping(value = "/service/{service}")

多くの選択肢がありませんか?ただし、少しリファクタリングして params をクエリすることもできます。

@RequestMapping(value = "/{id}") 
public String myMethod(@RequestParam(value = "service") String service){}
于 2014-05-22T13:40:02.463 に答える
1

`/{service} が指定されたサービスを含むコレクションを返すようにしたいので、より「正しい」アプローチはおそらくそれをクエリ パラメータとして「/」リクエスト マッピングに追加することです。

@RequestMapping(value = "")
public CollectionResource getItems(@RequestParam(value = "service", required = false) String serviceType)

そして、次のようなものを使用します

http://localhost // return all
http://localhost/123 // return item with ID 123
http://localhost?service=abc // return all items with service abc
于 2014-05-22T15:15:23.697 に答える