1

SpringMVC を使用して REST API を実装しています。ある時点で、階層 URI が必要になります。

/フォルダ/ID/子供/ID/子供/...ID/子供

可変深さ付き。RestEasy を使用すると、再帰的に top メソッドから Resource を返すことができます。SpringMVC で実装する方法はありますか? そうでなければ、それについて何か提案はありますか?

重要な点は、子 ID が同じレベルでのみ一意であることです。フォルダには同じ ID を持つ 2 つの子はありませんが、ツリー全体には同じ ID を持つ複数のアイテムが存在します。

どんな助けでも大歓迎です。

4

1 に答える 1

2

Springでこれを行う良い方法はないと思います。考えられる2つのオプションがありますが、どちらも少し醜いです...

  1. URI パターンで遭遇する各「深さ」をキャプチャするために、個別のコントローラー メソッドを記述します@RequestMapping("/children/{id1}/children/{id2}")。次に、共通メソッドを呼び出して、id再帰的である可能性のあるキャプチャされた s を処理できます。最大の「深さ」が 3 しかない場合は、おそらくこのオプションを選択します。コードは少なくとも他の開発者にとって読みやすく、コピー&ペーストの量が最小限になるためです。

  2. @RequestMapping("/children/{restOfUrl:+}")テンプレート パターン ( docs を参照)で正規表現を使用し、単一の文字列変数でパス全体をキャプチャします。次に、繰り返し単位を引き離す独自のロジックが必要です。これは鈍器であるという点で柔軟性に欠けます ( で始まるすべてをキャプチャすること/children/は見逃さ:+@RequestMappingやすいため、他の誰かがどの URI がどのコントローラー メソッドに対応するかを理解しようとするのが少し難しくなります。

于 2012-10-09T22:59:14.970 に答える