2017-01-23 6 views
1

モバイル、デスクトップ、アンドロイド、アイオスのリスティングと詳細ページがありますか?レストコンベンション:APIは詳細を送信する必要がありますか?

私たちは、リストのための2つのアピールと、それらのリスティングの詳細について他のものを持っています。したがって、1つのAPIは他のAPIと組み合わせられます。 ?

リストAPIは、次のようになります。応答 /API /書籍/ {bookId}

上場APIの詳細を送り返す: /API /書籍/価格= 100-300

詳細APIのように見えます各リストのためのAPIへのリンク: 例: 要求:

/api/books/?price=100-300 

はレスポンスを持っています

{ 
    "books":[ 
    { 
     "id": 1, 
     "price": 120, 
     "pages": 400, 
     "detailsUrl": "/api/book/{bookId}" 
    } 
    ] 
} 

問題は、各リスティングでdetailsUrlを送信するか、すべてのクライアントでこれを作成できるかどうかです。彼らはbookIdを持っているので、彼らはそれを作成することができます。

urlパラメータを考慮したベストプラクティスと考えられるものapi urlが今後追加される可能性があります。apiはバージョン管理されており、広く使われているapiの可能性はありますか?

+1

主に意見ベースですが、これは[アプリケーション状態のエンジンとしてのハイパーメディア](https://en.wikipedia.org/wiki/HATEOAS)と似ています。あなたのAPIのための慣習を適用することができます。適切なドキュメントがapiの概念を説明していることを確認してください。 – Nkosi

答えて

1

私はリンクを作成することに私のお金を入れた。パッティングidが十分ではありませんなぜ

There

は完璧な説明です

は、応答(例えば12など)だけでエンティティのIDが含まれていない ので、あなたがクライアントを強制しているような方法は、リソースを一緒に入れて自分自身のURI これを行うには、先に のURIがある必要があり、サーバー側のURIスペースである を制御できなくなってしまいます。

私は全体のリンクテキスト(承認された回答)を読むことをお勧めします。それは非常に詳細で、素敵なリソースを持っています。著者が述べたように、HALはリソース間の接続方法としてよく使われているconventionです。これをdetailsUrlの代わりに考えてみましょう。

リソースへのリンクが明白であっても、idを単独で入れることにしたとしても、しばらくしてから他のリソースに入れると、それほど簡単ではなく、完全なURLを指定することになります。あなたのAPIは一貫していません。経験によれば、メンテナンスでは完全なリンクを返すことが常に容易になりました。

関連する問題