web-dev-qa-db-ja.com

RESTfulデザインをWebサイト全体に適用しますか?

これらはすべて非常に新しいものに出くわすかもしれませんが、私は徹底的にRESTfulであるWebサイトの設計に頭を回そうとしています。ユーザー、写真、ブログ投稿などを「オブジェクト」のように考えるため、RESTfulデザインを適用することを理解しています。

しかし、「私たちについて」のページはどうですか。それはどのようなリソースですか? RESTfulな意味でのリソースですか?また、「http://www.example.com/」というURLにアクセスすると、どのようなリソースが必要ですか?インデックスリソース?

11
TaylorOtwell

私が目にする最も一般的なRESTful Webサイトのリソースパターンは、URIにviewを追加することです。

/resourcetype/identifier[/view] [/ページ] [?filterparams]

viewがない場合、デフォルトのビューを提供するだけです。あなたの場合:

  • /example.comに対するリクエストは、default viewを返しますトップレベルのリソース-あなたのウェブサイト。
  • / aboutus—トップレベルリソースの「About us」ビュー。または、代わりに、aboutusを最上位CMSのスコープ内のリソースの名前付きidentifierにすることもできます。*
  • / customers/1/aboutus—このリクエストは、customer 1

そうは言っても、セマンティクスを向上させるために少し手を加えることが最善の場合もあります。たとえば、StackOverflowは質問にR​​ESTful/ questions/[id]を使用しますが、 Ask Question ページは/ questions/askこれはあまりRESTfulではありません(askquestionsリソースではありません)が、単なる人間を使用します。


* CMSの最上位では、リソースタイプは冗長であるため、常にではありませんが、削除されることがよくあります。

6
Nicole

RESTful設計自体は、Webを均一にプログラム可能にする標準を提供することを目的としていることに注意してください。人間向けのウェブサイト全体を純粋なRESTセマンティクスにシューホーンすることは、常に適切であるとは限りません。

リソースがある場合、それらの表現を考慮することは有用です。また、ステートレスなどのRESTの他の設計原則、およびそれらがWebサイトのパフォーマンスとユーザビリティにどのように影響するかを考慮することも重要です。ただし、RESTはツールであり、目標ではありません。手段であり、目的ではありません。

usefulでRESTfulセマンティクスを使用し、その目的と利点を理解した後、サイトが完全にRESTfulでない場合でも気にしないでください。いかなる場合でも、重要なサイトではほとんど不可能です。

TL; DR:RESTはツールです。便利で便利な場所で使用してください。

10
Rein Henrichs

しかし、「私たちについて」のページはどうですか[?]それはどのようなリソースですか?

繁雑。コンポーネント、断片、または構造を持つリソースに問題はありません。

リソースは、「リレーショナルデータベース行」やその他のアトミックなものではありません。それらはリソースです。

ドキュメント指向のデータベースは、リソースをより大きく構造化できるため、これをより適切に処理します。

RESTfulな意味でのリソースですか?

はい。

また、「http://www.example.com/」というURLにアクセスすると、どのようなリソースが必要ですか?

番号。

「aboutus」リソースを求めています。リソースがシングルトンになる可能性があります(奇数です)。 IDはなく、「リスト」でもありません。

http://www.example.com/aboutus/?format=xml

多数のピースとパーツを含む複雑なXMLドキュメントを返します。何も問題ありません。

インデックスリソース?

「RESTful」という意味ではあまり意味がありません。 「インデックス」ページは人向けです。 RESTful APIを使用するアプリケーションは、特定の種類のリソースを要求するように設計されています。

4
S.Lott

私は自分の見解をバックエンドから独立させておきます。アコーディオン上にあるもの、ナビゲーションバー、および本体に関連するその他のオブジェクトなどのリソースをバックエンドに要求できます。ただし、これらのリソース表現の処理はクライアントコードに任せる必要があります。これにより、最終的に要件に応じてレンダリングされます。

1
SPI

「About Us」のリソースは... Us :) er、Youです。あなたが公表したいあなたの属性を考えて、それらを表現を持つ名詞としてまとめてください。

これらの値はデータベースから取得する必要はありません...おそらく文字列値の束であり、それらはconfigから取得することも、クラスにハードコーディングすることもできます。

1
Rob