7

APIを利用した懸賞アプリケーションを作成しています。階層はかなり単純です。

  1. クライアント
  2. ユーザー
  3. 懸賞
  4. 提出物

クライアントには、基本的に懸賞の管理者であるユーザーを含めることができます。クライアントは、複数の懸賞を持つこともできます。また、1つの懸賞に複数の応募を含めることができます。さて、複雑ではありません。

私が混乱するのは、URL構造に対する正しいアプローチです。インターネット全体でドキュメントやベストプラクティスのブログを読んだことがありますが、それでも混乱しています。現在のルートは次のとおりです。

クライアント

POST / clients
GET / clients
GET / clients /:client_id
PUT / clients:client_id

ユーザー

POST / users
GET / users
GET / users /:user_id
PUT / users /:user_id
DELETE / users /:user_id

懸賞

POST / sweepstakes
GET / sweepstakes
GET / sweepstakes /:sweepstakes_id
PUT / sweepstakes /:sweepstakes_id
DELETE / sweepstakes /:sweepstakes_id

提出物

POST / subjects
GET / subjects
GET / subjects /:submission_id
PUT / subjects /:submission_id
DELETE / subjects /:submission_id

ご覧のとおり、私はリソースごとに単純な2つのURLをフォローしています。これがベストプラクティスだと思います。次に、任意のGETリクエストのクエリパラメータを介して関連付けにドリルダウンできます(例:/ subject?sweepstakes_id = {sweepstakes_id} 、/ sweepstakes?client_id = {client_id}など)。

もちろん、これは私には理にかなっていますが、同僚と私は、Backboneを使用してプライマリフロントエンドアプリを構築しているため、気が遠くなります。Backboneは、RESTful APIの消費をすぐにサポートすると述べていますが、私の同僚は、Backboneはその階層構造を表すURL構造を好むと言っています。もちろん、それは厄介で、長く、全体的に混乱するURL構造につながると思います。理想的には、私の同僚は次のURL構造を見たいと思っています。

GET / clients
GET / clients / users
GET / clients / sweepstakes
GET / clients / sweepstakes / subject

注:上記のルートには、URL内の追加のリソースIDを介して単一のリソースを補完する追加のルートもあります(例:/ clients / users /:user_id/ clients / sweepstakes /:sweepstakes_id / subjectsなど)。

これはやや厄介な問題であることは知っていますが、これについてのフィードバックをお待ちしています。私はリソースごとに1つの2つのURLに投票します。関連付けを行う必要がある場合は、GETまたはPOSTパラメーターを使用して関連付けることができます。しかし、私は完全に間違っている可能性があります。

4

2 に答える 2

6

そうです、これは物議を醸すトピックです。そうは言っても、APIの標準/定義を具体化しようとするときに、 Apigeeのギャングが非常に役立つことがわかりました。彼らは、1つの方法が正しいとは言いません。業界での経験に基づいて、知識に基づいた推奨事項に傾倒します。

彼らはいくつかの素晴らしいリソースを提供し、あなたがあなたの隅にいる他の誰かとあなたの意見を守ることができる位置に到達するのを助けるかもしれないいくつかのコンテンツを持っています。

このウェビナーをチェックしてください...それはかなり基本的なものですが、APIデザインに関しては常に復習に最適です。

注:私はApigeeとは提携していません。彼らは、API設計用に定義された標準を取得しようとして素晴らしい仕事をしたと思います。

〜頑張ってください。これがお役に立てば幸いです。

于 2013-02-11T13:08:12.100 に答える
1

RESTの公式定義には、階層URIが優先されることを示唆するものは何も見つかりませんが、何かを見逃している可能性があります。バックボーンについては何も知りませんが、その構造が必要な場合は、それを行う必要があると思いますが、それ以外の方が良い理由はないようです。ただし、多くの場合、各リソースには1つの一意のURIがあり、階層的なURIには複数のURIがあるように見えます。私はあなたがあなたの同僚のために話すことができないことを知っています、しかし彼は彼の計画がより良い機能を持っているであろう具体的な理由を提供しましたか?

于 2013-01-14T16:54:10.927 に答える