2017-06-30 4 views
1

特定のアイテムを閉じることができるかどうかを判断するためにRESTエンドポイントを実装します。 RESTデザインの観点からは、どうやってそれを正しく行うことができますか?特定のアイテムを閉じることができますか?REST API

/アイテム/ canbeclosed - 多分

/アイテム/ステータスのようなものを醜い

に聞こえるが、私はすでにステータスエンドポイントはどのように私はからそれを正しく行うことができます別の目的

答えて

1

具体的に何をしたいかによって、いくつかの可能性があります。特定の項目を閉じることができるかどうかを取得するための

、アイテムを取得し、この質問に答えるのフィールドがあります。

GET /items/{itemNumber}

{ 
    "canBeClosed": true, 
    ... 
} 

あなたはまた、特定のフィールドのサブリソースを使用することができた:

GET /items/{itemNumber}/can-be-closed

true 

これはまた、 "安らかな"ものですが、いくつかのエッジケースでのみ役立ちます。ごくわずかな情報があれば、ネットワーク経由で電話をかけたくないでしょう。これによりパフォーマンスが低下します。

上記の解決策は、IDで識別される単一のリソースを指していることに注意してください。コレクションリソースとアイテムリソースの違いについてはrestapitutorial.comをご覧ください。

GET /items;closable=true

マトリックス:

GET /items?closable=true

はこの場合、私はより多くの行列のparamを使用したいと思います:

はたぶん、あなたは閉鎖可能なアイテムのリストを取得したいですparamsは、最終結果ではなく特定のパス要素にバインドされている点を除いて、クエリパラメータとよく似ています。ドイツに住む顧客の注文を返します

GET /customers;country=Germany/orders

:だから、このようなものを持つことができます。これは、常に最後に追加されるため、クエリパラメータでは不可能です。だから私の目では、ページングと並べ替えの方が優れていますが、マトリックスパラメータはフィルタリングの方が優れています。

2

のために使用されていますRESTデザインの視点?

RESTはあなたのURIに使用するスペルを気にしません。

のどの項目に当てはまるのか考えなくてもいいでしょう。たとえば、アイテムが「完了」しているため「閉じる」ことができる場合は、/items?completedまたは/items/completed、または「/ completedItems」さえも合理的な綴りになる可能性があります。

また、これらのタスクは、タスクキューに配置され、異なるステージに異なるキューが設定されていることがあります。だから/stages/closeItem/tasksのようなものが正しいかもしれません。

あなたのタッチストーンは、すべてRESTと同様に、あなたのAPIをウェブサイトとして想像することです。この情報にアクセスするためにWebページに移動しなければならない場合、Webページの識別子はどのようなものになりますか?そしてそこに行く。

関連する問題