RESTful Webサービスの利点は何ですか?


8

アカデミックタスク…最初に.html、さまざまな行政区分での選挙結果を示す一連の静的ファイルを生成するように指示されました。次に、Djangoテンプレートを使用してこれを「近代化」するように指示されました。十分に公正で、私はそのようなアプローチの利点を見ることができます。

しかし、アプリを「RESTful」にすることで、これをさらに「mordernize」するように言われました。私の知る限り、これはサーバーがクライアントにJSON形式の生データを送信することでリクエストに応答するAPIのみを公開できることを意味します。静的なHTML + CSS + JSサイトであるクライアントは、このJSONを受信し、JavaScriptを使用してブラウザー側で動的にWebページを構築する必要があります。

悲しいことにいくつかの講義を欠場したので、これが説明されたはずですが、そのようなアプローチの利点は誰にでも説明できますか?私は欠点しか見ることができないと言わなければならないので:

  • JavaScriptが無効になっているユーザーは、ページを表示できません。
  • 私が間違っている場合は修正してください。ただし、このようなサイトのコンテンツはGoogleでインデックスに登録することができません。
  • ユーザーが特定の部門の選挙結果をブックマークすることは不可能です。代わりに、サイドにアクセスするたびに、クリックして特定の部門の結果をJavaScriptに読み込ませる必要があります。または、これを行うSeleniumボットをデプロイします。
  • ブラウザのボタンを元に戻す/進む。


もう1つポイント。Googleはコンテンツのインデックスを作成するためにブラウザのようにページをレンダリングするようになりました。そのため、RESTサービスからの動的コンテンツは、ページに入る場合(少なくともGoogle AFAIKによって)クロール可能です。。Webページをよりよく理解する
Naresh Kumar

回答:


13

技術的には、HTMLページを提供するWebサーバー RESTfulです。統一されたインターフェイスに従って、メディアタイプが適切に設定されている限り、Text / Htmlは有効で完全に有効な表現です。動詞(GET、POSTなど)を乱用せず、HATEOAS(つまり、基本的にリソースを一意に識別する賢明なURLを使用する)に従って、安静にします。

あなたの教授が求めていることは、あなたのWebページがRESTful APIを使用し、jsonを返すことが多いということです(ただし、クライアントが受け入れる任意のメディアタイプを返すことができます)。

あなたの反対について:

JavaScriptが無効になっているユーザーは、ページを表示できません。

まあ、彼らは動的なコンテンツを取得することはできません。ページはまだ静的コンテンツを含むことができます。

私が間違っている場合は修正してください。ただし、このようなサイトのコンテンツはGoogleでインデックスに登録することができません。

メタタグを含む静的コンテンツは問題なくクロールできます。

ユーザーが特定の部門の選挙結果をブックマークすることは不可能です。代わりに、サイドにアクセスするたびに、クリックして特定の部門の結果をJavaScriptに読み込ませる必要があります。または、これを行うSeleniumボットをデプロイします。ブラウザのボタンを元に戻す/進む。

いや。HATEOASを適切にフォローしている場合、URLはページのレンダリングに必要なすべての状態情報を提供し、URL内にある場合はブックマーク可能です。


ありがとうございましたが、理解できないことが1つあります。URLにすべての情報が含まれている場合、サーバーにリクエストを送信して、この行政区分のすべての選挙結果を取得します。タスクの仕様に従っている場合は、JSONを取得します…いいえ、要件に従って、私はこのJSONをを介してクロールしますが、ブラウザーのアドレスバーに表示される内容には影響XMLHttpResponseません。したがって、選挙結果を表示する行政区分に関係なく、ブックマーク可能なURLは同じであり、メインページを指しています。
gaazkam

4
そうだね。JavaScriptがページに動的な変更を加える場合、通常、URLは一致するように更新されません。ただし、ブックマークが重要な場合は、一致させることができます。これを行う方法については、pushStateとreplaceState、および場合によってはlocation.hashを参照してください。
John Wu

1
そして実際には、プッシュ状態を正しく使用している場合、Googleは動的コンテンツもクロールします。newmediacampaigns.com
Paul

2
+1(特にhtml応答はRESTfulである可能性があることを言及するため)ですが、Googleのスパイダーはしばらくの間JavaScriptを実行していませんか?
RubberDuck

フロントエンドとバックエンドを標準の通信APIシステムで分離する。
sgargel

0

微妙な違いですが、WebページからWebアプリケーションに移行しています。Webページでは、サーバーとクライアントは密結合しています。情報を表示するための唯一のオプションは、Webページ経由です。

データをRESTful Webサービスに移動することで、ビュー(以前はWebページでした)とモデル(データ)が完全に分離され、データとの対話のオプションが増えます。


0

REST APIは、他のAPIと同様に、クライアントが使用できる機械可読インターフェースでリソースを利用できるようにします。

そのAPIを使用してWebサイトを構築する場合、同じサービスを使用する可能性のある多くのアプリケーションの1つです。

RESTスタイルの利点は次のとおりです。-既存のプロトコル(ここではHTTP)を使用してデータを交換します-定義されたメディアタイプを使用してリソースを交換します。

これは、他の開発者が既存の知識とツールを使用してAPIを使用できることを意味します。

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