1

REST に関する多くの SO 回答を見てきましたが、概念はまだ明確ではありません。
少なくとも、名前付け (URL) を適切に行うことが REST の中心にあるように思えました。

以下のアドレススキームを落ち着かせるにはどうすればよいですか?
(画像のリストがありますが、リクエストごとに異なるサブセットを提示します)

image_list/recent      (all image sorted in descending)
image_list/recent/front/  (to request newer images than a client has. client will provide the latest image id he has) 

image_list/popular (sorted in popularity)
image_list/following/ (list of images of users that a client follows)
image_list/user_like/  (list of images a client likes)

リソースに対して実行できる操作が多数ある場合はどうですか?

image/upload/
image/delete/
image/like/
image/dislike/
image/hide/

編集

これは、回答を見た後の解決策です。(しかし、私はまだ疑問を持っており、そう示しました)

最初のセット

images/?mode=recent
images/?mode=recent_front
images/?mode=popular
images/?mode=following&user_id=3
images/?mode=like&user_id=3

どんどん変わっていくimages/ for all imagesのに使う慣習じゃないの? なぜ私はそれを使用できないのですか?all images set
images/recent

2番目のセット

images/ POST  (to create)
images/ DELETE 
 (to delete, ok but I have not seen anyone using `DELETE`. Does anyone use it?)
images/3/like POST (OK there's a `like` DB entity)
images/3/dislike POST (umm but there's no dislike DB entity)
images/3/hide .. (there's no hide entity, it's a merely a field on image)  
4

1 に答える 1

1

ご存じのとおり、REST は単なる URL の命名方式ではありません。

URI 命名スキームで重要なことは、URI が特定のリソース/エンティティを一意に識別することです。Wikiページから直接引用:

REST の重要な概念は、リソース (特定の情報のソース) の存在です。各リソースは、グローバル識別子 (HTTP の URI など) で参照されます。

あなたの場合、URI を構造化して、画像またはすべての画像のコレクション全体を一意に識別できるようにする必要があります。これを行う方法は複数あります。クエリ文字列を好む人もいれば、URI フォルダー構造の一部として識別子を含めることを好む人 (私を含む) もいます。REST はどちらか一方を指示しません。

画像を識別するために何が必要かを考えてみてください。それはファイル名かもしれませんが、アプリケーションがデータベース駆動型の場合は、インデックス ID 番号を使用する可能性が高くなります。URI を次のように設定できます。

http://YOURDOMAIN.TLD/API/IMAGE/232423

232423画像を一意に識別する場所。

次に、2 番目の質問に進みます。

リソースに対して実行できる操作が多数ある場合はどうですか?

HTTP 経由の REST API では、アクションは通常、使用する HTTP メソッドによって指定されます。GETデータの取得、データPOSTの更新/挿入、およびデータDELETEの削除に使用します。上記で行ったように、URI 自体でアクションを指定することは一般的ではありません。私は一般的な慣行について話していることに注意してください。REST の原則は、使用する HTTP メソッドや URI の命名構造を規定するものではありません。

画像のいいねの例を挙げると、ページのいいねをリソース、つまり一意のエンティティとして扱う必要があります。このエンティティで実行したいさまざまなアクションがあります。たとえば、1. 画像のいいね! の数を調べます。2. 合計に新しいいいね! を追加します。

REST メソッドが画像を好きPOSTにするには、次のような URIとして設定できます。

http://YOURDOMAIN.TLD/API/IMAGE/232423/LIKE

232423は画像の識別子であり、その特定の画像のいいね! を参照LIKEします。

画像のいいね! の数を取得する場合は、同じ URI を使用しますが、HTTP メソッドを に切り替えますGET

于 2013-01-17T00:54:36.853 に答える