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


11

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

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


明確化が必要だと思います。最終目標は何ですか。安らかなデザインの必要性は何ですか。方程式から落ち着いて、どのようなニーズを満たそうとしていますか?
ジョナサンカウフマン

1
最終目標は、完全なWebサイトです。落ち着いたデザインを中心にWebサイトを構築することは、Webの仕組みに基づいて理にかなっているようです。aboutやcontactページなど、リソースとは思えないものにそのようなデザインを適用する方法がわかりません。
テイラーオットウェル

回答:


6

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

/ resourcetype / identifier [/ view ] [/ page] [?filterparams]

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

  • / —リクエストはトップレベルのリソースであるあなたのウェブサイトexample.comデフォルトビューを返します。
  • / aboutus —トップレベルリソースの「About us」ビュー。または、代わりに、トップレベルCMSのスコープ内のリソースのaboutus名前付き識別子にすることもできます。*
  • / customers / 1 / aboutus —このリクエストは、顧客1対象とした「About us」ビューを示します

そうは言っても、セマンティクスを向上させるために、少し間違えた方が良い場合もあります。たとえば、StackOverflowは質問に RESTful / questions / [id]を使用しますが、Ask Questionページは/ questions / askであり、あまりRESTfulではありません(リソースでaskはありませんquestions)。


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


10

RESTful設計自体は、Webが均一にプログラム可能になる標準を提供することを意図していることに留意してください。人間向けのWebサイト全体を純粋なRESTセマンティクスに靴磨きすることは必ずしも適切または有用ではありません。

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

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

TL; DR:RESTはツールです。いつでもどこでも便利ですが、それに拘束されないでください。


2
+1 URL以外にも休息が必要です。
ジョシュ・ノエ

Ajax、REST、およびRESTサイトへの外部リンクは悪夢です。ご回答ありがとうございます。
ジョニー

4

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

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

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

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

それは言葉のRESTfulな意味でのリソースでもありますか?

はい。

また、「http://www.example.com/」というURLにアクセスするとします。どのリソースを要求していますか?

番号。

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

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

多数のピースとパーツを含む複雑なXMLドキュメントを返します。それについて何も悪いことはありません。

インデックスリソース?

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


4
+1あなたの答えから重要なポイントをいじりたいと思います。RESTはプログラム可能なパラダイムです。必ずしも人間が消費するためのものではありません。
ラインヘンリヒス

1

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


1

「About Us」のリソースは... Us :) er、Youです。あなたが公表したいあなたの属性について考え、それらを表現のある名詞としてロールアップします。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.