このような UriTemplates はこれまでにないと思います。
http://myapi.com/cage/12/pigs/23
- ケージ 12 にいるブタ 23 をくれ
標準または REST API は通常、/pigs/23 に対応していないと考えています。すべてを 1 つのレベルに維持しているだけだと思うので、その豚が必要な場合は、Pig サービスから取得します。and by sending a request to /pigs/23
つまり、次のような URL が RESTful API に入ることはありません。
http://myapi.com/cage/12/pigs/23
それを豚サービスの特定のメソッドにマッピングするという点で、それをどのように処理するのでしょうか? pigs サービスの GetByCage(int id, int caveId) から 12 の ageId を取り除きますか?
APIでこれを行うすべてのリソースについて考えると、特定のリソースにこれらのタイプのBySomethingメソッドが大量にあるため、一貫性がなくなったり保守できなくなったりする可能性があるため、複雑になりすぎると思います。
私が間違っていなければ、人々はそれを [resource]/[id] だけに留めていると思います.1つのレベルは、Uri の最初のリソースまたは ID を決して超えないことを意味し、そこで停止します。次に、応答でハイパーメディアを使用して、別のリソースにアクセスするための別の Uri を消費者に提供します。
その場合、http://myapi.com/cage/12/pigs/23
実際には決してそうであってはなりません。これは /cage/12 への呼び出しである必要があります。そのケージ表現が返されます。次に、ケージの json オブジェクトに、次のようなプロパティが表示され、http://myapi.com/pigs/23
別の呼び出しを行いますか? これは 2 回の呼び出しです。上記のように Uri にサブ リソースを入れて 1 回の呼び出しを行うのではなく、負荷がかかる可能性があります (pig はケージのサブリソースです)。サブリソースをハイパーメディア (メインリソース内のリンク) として配置し、そこで停止しますか? つまり、REST API では、要求した最初のリソースを超えることはありません。URL 自体にサブリソースをリストするのではなく、ハイパーメディアを使用します。代わりに、それを最初のリソースに埋め込みます...そうですか?
わかりませんが、これも見つけました: http://stateless.co/hal_specification.html