4

クライアントのWebサイト用のRESTAPIの開発を開始しようとしており、いくつかの調査を行っています。APIのゴールドスタンダードに関するこの有用な質問に出くわしました。

この投稿を読む前に、FlickrAPIを参照ポイントとして使用することを考えていました。しかし、上記の質問に対するこのコメントは、私に2度考えさせました。

The Flickr API is particularly hilarious, for example. It advertises itself as RESTful and yet is nothing of the sort!NathanE

私は特に、Flickr APIがRESTfulではない理由と、RESTful要素がないこれらの要素に影響を与えるものに興味があります。

4

2 に答える 2

6

このAPIがRESTfulでないと見なされるもう1つの重要な理由は、「ハイパーテキスト」を使用しないためです。ハイパーテキストは、プログラムでURIを「構築」するのではなく、単にリンク(およびリンクリレーション)を使用してクライアントをアプリケーション内で移動させます。

これはRESTfulではありません:

GET / collection
200 OK

<collection>
  <item>
    <id>1</id>
  </item>
</collection>

これはRESTfulです:

GET / collection
200 OK

<collection>
  <item href="/collection/1" />
</collection>

後者のRESTfulアプローチの利点は、サーバーがアイテムリソースを必要な場所に移動できることです(たとえば、/ item / 1に移動します)。href値を変更し、すべてのクライアントが変更を管理することを認識します。サーバーはすべてのクライアントが変更を確認することを保証できないため、前者のアプローチではこれを実行できません。これは、クライアント/サーバーカップリングと呼ばれるものの一部であり、APIに多数のクライアントがある大規模な分散システムでは、これを最小限に抑えたいと考えています。これがRESTの主な目的です。

Roy Fieldingは、RESTのこの部分を「ハイパーテキスト制約」と呼び、それについて次のブログ投稿を書きました。

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

于 2010-02-05T11:04:57.867 に答える
4
  • HTTP動詞の誤った使用:Flickerは、http://api.flickr.com/services/replace/でHTTPPUTの代わりに動詞「replace」を使用します。別の例:http ://api.flickr.com/services/rest/?method = flickr.test.echo&name = value 「method」はHTTPメソッド(この場合はGET)の1つである必要があります。
  • フリッカーはHTTPステータスコードを正しく使用しません。
  • 認証はRESTfulではありません
于 2010-02-05T09:46:44.657 に答える