RESTful Webサービスチュートリアル:REST APIの例
⚡ スマートサマリー
RESTful Webサービスは、アプリケーションが標準的なHTTP動詞を使用してデータを交換するための軽量でステートレスなアプローチを提供します。クリーンな方法でリソースを公開します。 URLこれにより、分散クライアント、サーバー、モバイルデバイス、最新のクラウドおよびAIプラットフォーム間で、拡張性が高くプラットフォームに依存しない通信が可能になります。
Restful Web サービスとは何ですか?
くつろげるウェブサービス RESTful Webサービスは、RESTアーキテクチャに基づいて構築された、軽量で保守しやすく、拡張性に優れたサービスです。RESTful Webサービスは、アプリケーションのAPIを、安全かつ統一されたステートレスな方法で呼び出し元のクライアントに公開します。呼び出し元のクライアントは、RESTfulサービスを使用して、事前に定義された操作を実行できます。RESTの基盤となるプロトコルはHTTPであり、RESTはRepresentational State Transfer(表現状態転送)の略です。
簡単に言うと、RESTは、ドキュメント、画像、データベースレコードなどのリソースをWeb上で作成、読み取り、更新、削除するための標準的な方法を定義するものです。プレーンなHTTPを使用しているため、特別なツールを使わなくても、ほぼすべてのプログラミング言語やデバイスでRESTfulサービスを利用できます。
なぜRESTful Webサービスを使うのか?
技術的な詳細を探る前に、RESTがなぜこれほど人気になったのかを理解しておくと役立ちます。RESTful Webサービスが注目を集めるようになった理由は以下のとおりです。
1. 異種言語と環境 これは、これまで見てきたのと同じ根本的な理由の 1 つです。 石鹸 同様に。
- これにより、様々なプログラミング言語で構築されたWebアプリケーション同士が通信できるようになります。
- RESTfulサービスを利用することで、これらのWebアプリケーションはさまざまな環境に存在できます。 Windows、その他は Linux 上にある可能性があります。
最終的に、どのような環境であっても、結果は常に同じであるべきです。つまり、アプリケーション同士が相互に通信できることです。RESTful Webサービスは、さまざまなプログラミング言語やプラットフォームで構築されたアプリケーションに、このような柔軟性を提供します。
下の図は、Facebook、Twitter、Webアプリケーションなどの他のアプリケーションと通信する必要があるWebアプリケーションの例を示しています。 Google.
クライアントアプリケーションがFacebookやTwitterなどのサイトと連携する必要がある場合、開発者は通常、それらのサイトがどの言語とプラットフォームで構築されているかを知る必要があります。それに基づいてインターフェースコードを記述することはできますが、このアプローチは保守が非常に困難になる可能性があります。
代わりに、Facebook、Twitter、 Google これらの機能は、RESTful Webサービスという形で公開されます。これにより、基盤となる技術に関係なく、あらゆるクライアントアプリケーションがREST経由でこれらのWebサービスを呼び出すことができます。
2. デバイスのイベント – 今では、あらゆることに取り組む必要があります モバイル 携帯電話、ノートパソコン、あるいは車載システムなど、あらゆるデバイス。
これらのデバイス上で通常のWebアプリケーションと通信するアプリケーションをコーディングするのにどれだけの労力が必要になるか想像してみてください。繰り返しになりますが、RESTful APIを使えばこの作業ははるかに簡単になります。なぜなら、前述のとおり、デバイスの基盤となるレイヤーについて知る必要がないからです。
3. クラウドのイベント – すべてがクラウドに移行しています。アプリケーションは徐々にクラウドベースのシステムに移行しています。 Azure or Amazon. Azure (NAIST) と Amazon RESTfulアーキテクチャに基づいたAPIが多数提供されているため、アプリケーションはクラウドとの互換性を考慮して開発する必要があります。クラウドベースのアーキテクチャはすべてRESTの原則に基づいて動作するため、クラウドサービスを最大限に活用するには、WebサービスをRESTベースのアーキテクチャでプログラミングするのが理にかなっています。
RESTful な主要要素
RESTウェブサービスは、その誕生以来、大きな進歩を遂げてきました。2002年、WebコンソーシアムはWSDLとSOAPウェブサービスの定義を発表しました。これにより、ウェブサービスの実装方法に関する標準が確立されました。
2004年、ウェブコンソーシアムはRESTfulと呼ばれる新たな標準規格の定義も発表しました。この標準規格はここ数年で非常に普及し、現在ではFacebookやTwitterをはじめとする世界中の多くの人気ウェブサイトで使用されています。
RESTは、特定の環境に存在するリソースにアクセスするための方法です。例えば、重要な文書、画像、動画などをホストするサーバーがあるとします。これらはすべてリソースの例です。Webブラウザなどのクライアントがこれらのリソースを必要とする場合、サーバーにリクエストを送信する必要があります。RESTサービスは、これらのリソースにアクセスするための標準的な方法を定義します。
RESTful 実装の主要な要素は次のとおりです。
- 資料 – 最初の重要な要素はリソースそのものです。サーバー上のWebアプリケーションに複数の従業員の記録があると仮定しましょう。 URL ウェブアプリケーションの https://demo.guru99.com従業員記録リソースにRESTサービス経由でアクセスするには、次のコマンドを実行します。 https://demo.guru99.com/employee/1このコマンドは、従業員番号が1の従業員の詳細を提供するようWebサーバーに指示します。
- リクエスト動詞 これらは、リソースに対して何を行いたいかを説明します。ブラウザは、エンドポイントにデータを取得したいことを指示するためにGET動詞を発行します。ただし、POST、PUT、DELETEなど、他にも多くの動詞が利用可能です。したがって、例の場合 https://demo.guru99.com/employee/1実際には、Webブラウザは従業員記録の詳細を取得したいので、GET動詞を発行しています。
- リクエストヘッダー これらはリクエストとともに送信される追加指示です。必要な応答の種類や承認の詳細などが定義されている場合があります。
- リクエスト本文 これはリクエストとともに送信されるデータです。REST WebサービスにPOSTリクエストを送信すると、通常、リクエストボディにデータが送信されます。POST呼び出しでは、クライアントはREST Webサービスに対し、サーバーにリソースを追加したい旨を伝えます。そのため、リクエストボディには追加する必要のあるリソースの詳細が含まれます。
- 応答本文 これはレスポンスの本体です。つまり、RESTful API の例では、リクエストを介して Web サーバーにクエリを実行すると、 https://demo.guru99.com/employee/1ウェブサーバーは、応答本文に従業員の詳細情報をすべて含んだXMLドキュメントを返す可能性があります。
- 応答ステータスコード これらは、Webサーバーからの応答とともに返される一般的なコードです。例えば、コード200は、クライアントへの応答にエラーがない場合に通常返されます。
安らかな方法
以下の図は、ほとんどの動詞(POST、GET、PUT、DELETE)と、それらが意味するREST APIの例を示しています。
RESTful Webサービスが定義されている場所があると仮定しましょう。 https://demo.guru99.com/employeeクライアントがこのウェブサービスにリクエストを送信する際、GET、POST、DELETE、PUTといった通常のHTTPメソッドを指定できます。以下に、クライアントがそれぞれのメソッドを送信した場合に何が起こるかを示します。
- POST これは、RESTful Webサービスを使用して新しい従業員を作成するために使用されます。
- GET これは、RESTful Webサービスを使用して全従業員のリストを取得するために使用されます。
- PUT これは、RESTful Webサービスを使用して全従業員の情報を更新するために使用されます。
- DELETE これは、RESTfulサービスを使用してすべての従業員を削除するために使用されます。
では、単一のレコードの観点から見てみましょう。従業員番号が1の従業員レコードがあったとします。以下の操作はそれぞれ意味を持ちます。
- POST これは適用されません。なぜなら、既に作成済みの従業員1のデータを取得しようとしているからです。
- GET これは、RESTful Webサービスを使用して、従業員番号1の従業員の詳細を取得するために使用されます。
- PUT これは、RESTful Webサービスを使用して、従業員番号1の従業員の詳細を更新するために使用されます。
- DELETE – これは、従業員番号1の従業員の詳細を削除するために使用されます。
安らかな Archi構造
RESTfulまたはRESTスタイルのアプリケーションまたはアーキテクチャは、以下の特徴を備えています。
1. 状態と機能が分散リソースに分割される つまり、すべてのリソースは、GET、POST、PUT、DELETEといった通常のHTTPコマンドでアクセスできる必要があるということです。したがって、サーバーからファイルを取得したい場合は、GETリクエストを発行してファイルを取得できます。サーバーにファイルをアップロードしたい場合は、POSTまたはPUTリクエストを発行できます。最後に、サーバーからファイルを削除したい場合は、DELETEリクエストを発行できます。
2. アーキテクチャはクライアント/サーバー型で、ステートレスかつ階層型であり、キャッシングをサポートしています。
- クライアント サーバーは、サーバーがアプリケーションをホストする Web サーバーであり、クライアントが Web ブラウザーと同じくらい単純なものである典型的なアーキテクチャです。
- ステートレスとは、アプリケーションの状態が REST で維持されないことを意味します。 たとえば、DELETE コマンドを使用してサーバーからリソースを削除した場合、削除情報が次のリクエストに渡されることは期待できません。
リソースが確実に削除されたことを確認するには、GETリクエストを発行する必要があります。GETリクエストは、まずサーバー上のすべてのリソースを取得するために使用され、その後、リソースが実際に削除されたかどうかを確認する必要があります。
RESTFul の原則と制約
RESTアーキテクチャは、以下に詳述するいくつかの特性に基づいています。RESTfulウェブサービスと呼ばれるためには、以下の特性を満たす必要があります。これらの特性は、RESTfulベースのサービスを扱う際に従うべき設計原則としても知られています。
これはRESTベースのアーキテクチャにおける最も基本的な要件です。つまり、サーバーはクライアントに必要な機能を提供するRESTful Webサービスを備えている必要があります。クライアントはサーバー上のWebサービスにリクエストを送信します。サーバーはリクエストを拒否するか、またはリクエストに応じて適切なレスポンスをクライアントに提供します。
- ステートレス
ステートレスという概念は、必要な情報をすべてサーバーに提供するのはクライアントの責任であることを意味します。これは、サーバーが応答を適切に処理するために必要です。サーバーは、クライアントからのリクエスト間でいかなる情報も保持すべきではありません。これは非常にシンプルで独立した質疑応答のシーケンスです。クライアントが質問をし、サーバーがそれに適切に回答します。クライアントが別の質問をすると、サーバーは以前の質疑応答のシナリオを記憶しておらず、新しい質問に独立して回答する必要があります。
- キャッシュ
キャッシュの概念は、前述のステートレス性の問題を解決するのに役立ちます。サーバーとクライアント間の各リクエストは本質的に独立しているため、クライアントは過去に既にリクエストした内容であっても、サーバーに同じリクエストを再度送信することがあります。このリクエストはサーバーに送信され、サーバーは応答を返すため、ネットワークトラフィックが増加します。キャッシュは、既にサーバーに送信されたリクエストを保存するためにクライアントに実装される概念です。そのため、クライアントが同じリクエストを送信した場合、サーバーに送信する代わりにキャッシュにアクセスして必要な情報を取得します。これにより、クライアントとサーバー間のネットワークトラフィックの往復量を削減できます。
- 階層化システム
階層型システムの概念は、ミドルウェア層などの追加レイヤーを、クライアントとRESTful Webサービスをホストする実際のサーバーの間に挿入できるという点にあります。(ミドルウェア層は、すべてのビジネスロジックが作成される場所です。これは、クライアントがWebサービスを呼び出す前にやり取りする追加サービスとなる場合があります。)ただし、このレイヤーの導入は、クライアントとサーバー間のやり取りを妨げないように、透過的である必要があります。
- インターフェース/ユニフォームtract
これは、RESTful Webサービスがどのように動作するべきかという基本的な技術です。RESTfulは基本的にHTTP Webレイヤー上で動作し、以下の主要な動詞を使用してサーバー上のリソースを操作します。
- POST – サーバー上にリソースを作成します。
- GET – サーバーからリソースを取得します。
- PUT – リソースの状態を変更したり、更新したりするために使用します。
- DELETE – サーバーからリソースを削除します。
RESTとSOAP:主な違い
開発者はWebサービスを設計する際に、RESTとSOAPを比較検討することが多い。どちらも分散アプリケーション間の通信を可能にするが、その哲学は大きく異なる。RESTはシンプルなHTTP動詞とJSONなどの軽量フォーマットを使用するアーキテクチャスタイルである一方、 石鹸 XMLエンベロープと正式な構成に依存する厳格なプロトコルですtract. 下の表は、最も重要な相違点をまとめたものです。
| 側面 | REST | 石鹸 |
|---|---|---|
| タイプ | Archi建築様式 | 厳格なプロトコル |
| データフォーマット | JSON、XML、プレーンテキスト、HTML | XMLのみ |
| 輸送 | HTTPのみ | HTTP、SMTP、TCP、その他 |
| 州/地域 | ステートレス | 無国籍か国家に属するか |
| パフォーマンス | より速く、より軽く | XMLオーバーヘッドのため、データ量が増加しています。 |
| ベスト | ウェブ、モバイル、および公開API | 厳格なセキュリティを必要とするエンタープライズアプリケーション |
実際には、RESTは高速で利用しやすいため、パブリックなWebおよびモバイルAPIのデフォルトの選択肢となっています。一方、SOAPは組み込みのセキュリティと正式な認証を必要とするエンタープライズシステムにとって依然として有用です。tracTS。
ASP.NET で最初の Restful Web サービスを作成する
このREST APIチュートリアルでは、ASP.NETでRESTful Webサービスを作成する方法を学びます。
ウェブサービスは様々なプログラミング言語で作成でき、RESTベースのサービスを作成するために多くの統合開発環境を利用できます。
このRESTful APIの例では、Visual Studioを使用して.NETでRESTアプリケーションを作成します。以下のデータセットを扱うRESTful Webサービスを作成します。
以下のデータセットは、Tutorialidに基づいて自社のチュートリアルを公開する企業のREST APIの例を表しています。
| チュートリアル | チュートリアル名 |
|---|---|
| 0 | 配列 |
| 1 | キュー |
| 2 | スタック |
このREST APIチュートリアルの例では、以下のRESTful動詞を実装します。
- チュートリアルを入手 クライアントがこのRESTful APIを呼び出すと、Webサービスから利用可能なチュートリアルの全セットが提供されます。
- チュートリアル/チュートリアルIDを取得する クライアントがこのRESTful APIを呼び出すと、クライアントから送信されたTutorialidに基づいてチュートリアル名が返されます。
- POST チュートリアル/チュートリアル名 クライアントがこのRESTful APIを呼び出すと、クライアントはチュートリアル名を挿入するリクエストを送信します。すると、Webサービスは送信されたチュートリアル名をコレクションに追加します。
- DELETE チュートリアル/チュートリアルID クライアントがこのRESTful APIを呼び出すと、クライアントはTutorialidに基づいてTutorialnameを削除するリクエストを送信します。すると、Webサービスは送信されたチュートリアル名をコレクションから削除します。
以下の手順に従って、上記の処理を実行する最初のRESTful Webサービスを作成しましょう。
初めての Restful Web サービスを作成する方法
ステップ1) 新しいプロジェクトを作成します。
最初のステップは、空の Asp.Net Webアプリケーションを作成するには、Visual Studio 2013でメニューオプション「ファイル」→「新規プロジェクト」をクリックします。
「新規プロジェクト」オプションをクリックすると、Visual Studio にプロジェクトの種類を選択し、必要な詳細情報を入力するためのダイアログボックスが表示されます。これについては、次の手順で説明します。
ステップ2) プロジェクト名と場所を入力してください。
- 最初に選択していることを確認してください C# ASP.NET WebアプリケーションのWebテンプレート。Webサービスプロジェクトを作成するには、プロジェクトはこのタイプである必要があります。このオプションを選択すると、Visual StudioはWebベースのアプリケーションに必要なファイルを追加するための手順を実行します。
- プロジェクトに名前を付けてください。この例では「Webservice.REST」とします。
- 次に、プロジェクトファイルを保存する場所を指定してください。
完了すると、Visual Studio 2013 のソリューションエクスプローラーにプロジェクトファイルが作成されていることが表示されます。
ステップ3) Webサービスファイルを作成します。
次のステップは、RESTful Webサービスを格納するWebサービスファイルを作成することです。
- まず、下図のようにプロジェクトファイルを右クリックします。
- このステップでは、
- プロジェクトファイルを右クリックします。
- 「追加」→「新規アイテム」を選択してください。
表示されるダイアログボックスで、以下の操作を行う必要があります。
- WCF サービス (Ajax 有効) オプションを選択してください。このタイプのファイルを選択すると、Visual Studio が RESTful Web サービスの作成に役立つ基本的なコードを追加します。WCF は、 Windows コミュニケーション FoundationWCFは、TCP、HTTP、HTTPSなどのさまざまなプロトコルを介して、さまざまなプラットフォーム(または同じプラットフォーム)のアプリケーションが通信するためのライブラリです。Ajaxは非同期です。 Javaスクリプト および XML。AJAX を使用すると、バックグラウンドでサーバーと少量のデータを交換することで、Web ページを非同期的に更新できます。
- 次に、サービスに名前を付けます。この例では、TutorialService とします。
- 最後に、「追加」ボタンをクリックしてサービスをソリューションに追加します。
ステップ4) 設定を行います。
次のステップは、このプロジェクトがRESTful Webサービスと連携できるように構成を変更することです。これには、というファイルの変更が必要です。 Web.configこのファイルは、Webサービスプロジェクトファイルと同じウィンドウに表示されます。Web.configファイルには、Webアプリケーションが正しく動作するために必要なすべての設定が含まれています。今回の変更により、アプリケーションは純粋なRESTful Webサービスとしてデータの送受信が可能になります。
- Web.configファイルをクリックしてコードを開いてください。
- 線を見つける。
- 行を次のように変更します。
ステップ5) 実装用のコードを追加します。
次のステップは、実装用のコードを追加することです。以下のコードはすべてTutorialService.svcファイルに記述する必要があります。
- まず最初に、プログラムで使用するデータを表すコードを追加します。具体的には、「Arrays」、「Queues」、「Stacks」という値を持つ文字列変数のリストを作成します。これは、ホスティングWebサービスを通じて利用できるチュートリアル名を表します。
namespace Webservice.REST { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class TutorialService { private static List<String> lst = new List<String> (new String[] {"Arrays","Queues","Stacks"});
ステップ6) GET メソッドのコードを定義します。
次に、GETメソッドのコードを定義します。このコードも同じTutorialService.svcファイルに記述します。このコードは、ブラウザからサービスを呼び出すたびに実行されます。
以下のシナリオを実現するために、以下の方法を使用します。
- ユーザーが利用可能なすべてのチュートリアルの一覧を取得したい場合は、以下のコードを記述する必要があります。
[WebGet(UriTemplate = "/Tutorial")] public String GetAllTutorial() { int count = lst.Count; String TutorialList = ""; for (int i = 0; i < count; i++) TutorialList = TutorialList + lst[i] + ","; return TutorialList; }
Code 説明:-
- 最初のコード行が最も重要です。これは、このメソッドを を介して呼び出す方法を定義するために使用されます。 URLなので、当社のウェブサービスへのリンクが http://localhost:52645/TutorialService.svc そして、'/Tutorial' を URL、のように http://localhost:52645/TutorialService.svc/Tutorial上記のコードが呼び出されます。「WebGet」属性は、このメソッドをRESTfulメソッドとして機能させ、GETメソッドを介して呼び出せるようにするためのパラメータです。
- コードのこのセクションは、「lst」変数内の文字列のリストを調べて、それらすべてを呼び出し側プログラムに返すために使用されます。
ステップ7) 出力を返します。
以下のコードは、チュートリアルIDを指定してチュートリアルサービスにGETリクエストが送信された場合、そのチュートリアルIDに基づいて対応するチュートリアル名を返すことを保証します。
[WebGet(UriTemplate = "/Tutorial/{Tutorialid}")] public String GetTutorialbyID(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); return lst[pid]; }
Code 説明:-
- 最初のコード行が最も重要です。これは、このメソッドを を介して呼び出す方法を定義します。 URLなので、当社のウェブサービスへのリンクが http://localhost:52645/TutorialService.svc そして、'/Tutorial/{Tutorialid}' を URLウェブサービスを次のように呼び出すことができます。 http://localhost:52645/TutorialService.svc/Tutorial/1例えば、WebサービスはチュートリアルIDが1であるチュートリアル名を返します。
- このコード部分は、Webメソッドに渡されたチュートリアルIDに対応するチュートリアル名を返すために使用されます。
- デフォルトでは、 URL ブラウザには文字列があります。
- しかし、リストのインデックスは整数でなければならないことを覚えておく必要があります。そのため、まず Tutorialid を整数に変換するための必要なコードを追加します。
- 次に、それを使用してリスト内のインデックス位置にアクセスし、呼び出し元のプログラムにそれに応じて値を返します。
ステップ8) POSTメソッドのコードを記述してください。
次のステップは、POSTメソッドのコードを記述することです。このメソッドは、POSTメソッドを使用してチュートリアルのリストに文字列値を追加したい場合に呼び出されます。たとえば、「ソフトウェアテスト」というチュートリアル名を追加したい場合は、POSTメソッドを使用する必要があります。
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/Tutorial/{str}")] public void AddTutorial(String str) { lst.Add(str); }
Code 説明:-
- 最初の行は、メソッドに付加された「WebInvoke」属性です。これにより、POST呼び出しを介してメソッドを呼び出すことができます。RequestFormat属性とResponseFormat属性はJSONとして指定する必要があります。これは、RESTful Webサービスに値を送信する場合、値がこの形式である必要があるためです。
- 2行目のコードは、POST呼び出しで渡された文字列値を、既存のチュートリアル文字列リストに追加するために使用されます。
ステップ9) DELETE操作を処理するメソッドを追加します。
最後に、DELETE操作を処理するメソッドを追加します。このメソッドは、DELETEメソッドを使用してチュートリアルリストから既存の文字列値を削除する際に呼び出されます。
[WebInvoke(Method = "DELETE", RequestFormat = WebMessageFormat.Json, UriTemplate = "/Tutorial/{Tutorialid}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] public void DeleteTutorial(String Tutorialid) { int pid; Int32.TryParse(Tutorialid, out pid); lst.RemoveAt(pid); }
Code 説明:-
- 最初の行は、メソッドに付加された「WebInvoke」属性です。これにより、DELETE呼び出しを介してメソッドを呼び出すことができます。RequestFormat属性とResponseFormat属性は、値がJSON形式である必要があるため、JSONとして指定する必要があります。Methodパラメータが「DELETE」に設定されていることに注意してください。これは、DELETE動詞を発行するたびに、このメソッドが呼び出されることを意味します。
- コードの XNUMX 行目は、DELETE 呼び出しを通じて送信された Tutorialid を取得し、その後その ID をリストから削除するために使用されます。 ( Int32 コード内の関数は、チュートリアルIDを文字列変数から整数に変換するために使用されます。
初めての Restful Web サービスを実行する
前述のセクションでウェブサービス全体を作成したので、次に、どのクライアントからでも呼び出し可能なチュートリアルサービスを実行する方法を見ていきましょう。
ウェブサービスを実行するには、以下の手順に従ってください。
ステップ1) プロジェクトファイル「Webservice.REST」を右クリックします。
ステップ2) メニューオプションの「スタートアッププロジェクトとして設定」を選択してください。これにより、Visual Studio がソリューション全体を実行する際に、このプロジェクトも実行されるようになります。
ステップ3) 次のステップは、プロジェクト自体を実行することです。システムにインストールされているデフォルトのブラウザーに応じて、Visual Studio の実行ボタンの横に適切なブラウザー名が表示されます。この例では、 Google Chrome 表示されます。このボタンをクリックするだけです。
出力:-
プロジェクトを実行すると、TutorialService.svc/Tutorial セクションに移動でき、以下の出力が表示されます。
上記の出力では、
- ブラウザが「GET」メソッドを呼び出し、Webサービス内の「GetAllTutorial」メソッドを実行していることがわかります。このモジュールは、当社のWebサービスによって公開されているすべてのチュートリアルを表示するために使用されます。
最初の Restful Web サービスをテストする
上記のセクションでは、ブラウザを使用して「GET」動詞を実行し、「GetAllTutorial」を呼び出す方法を既に説明しました。
- ブラウザを使用して次のユースケースのシナリオを実行してみましょう。
GET Tutorial/Tutorialid – クライアントがこのRESTful APIを呼び出すと、クライアントから送信されたTutorialidに基づいてチュートリアル名が返されます。
ブラウザで、Tutorial という単語の後に /1 という文字列を追加します。 URLEnterキーを押すと、以下の出力が表示されます。
これで「Queues」という出力が表示されます。これはチュートリアル文字列リストの番号1に対応しています。つまり、Webサービスから「GetTutorialbyID」メソッドが呼び出されたということです。また、値1がブラウザ経由でWebサービスとメソッドに正しく渡されていることも示されており、そのためブラウザに「Queues」の正しい値が表示されるのです。
- 次に、以下のシナリオを実行して、Webサービスを利用してみましょう。そのためには、というツールをインストールする必要があります。 Fiddlerこれは無料でダウンロードできるツールです。
POST Tutorial/Tutorialname – クライアントがこのRESTful APIを呼び出すと、クライアントはTutorialnameを挿入するリクエストを送信します。すると、Webサービスは送信されたチュートリアル名をコレクションに追加します。
実行する Fiddler ツールを起動し、以下の手順を実行してください。
- コンポーザーセクションに移動してください。これは、任意のWebアプリケーションに送信できるリクエストを作成するために使用されます。
- リクエストタイプが「POST」で正しいことを確認してください URL 攻撃を受けているが、我々の場合は http://localhost:52645/TutorialService.svc/Tutorial.
- Content-Typeがapplication/jsonになっていることを確認してください。当社のWebサービスにおけるPOSTリクエストメソッドはJSON形式のデータのみを受け付けるため、アプリケーションにリクエストを送信する際には、この形式を指定する必要があります。
- 最後に、データを入力する必要があります。POSTメソッドは「str」というパラメータを受け入れることを覚えておいてください。ここでは、「Trees」という値をチュートリアル名のコレクションに追加し、それが「str」変数名にタグ付けされるように指定しています。
最後に、実行ボタンをクリックします。 Fiddlerこれにより、Webサービスに対して「Trees」というデータを当社のWebサービスにPOSTするようリクエストが送信されます。
さて、チュートリアルにアクセスすると URL チュートリアルリスト内のすべての文字列を表示すると、「Trees」という値も含まれていることがわかります。これは、WebサービスへのPOSTリクエストが正常に実行され、チュートリアルリストに正常に追加されたことを示しています。
- 次に、以下のシナリオを実行して、Webサービスを利用してみましょう。そのためには、 Fiddler ツール。
チュートリアル/チュートリアルIDの削除 – クライアントがこのRESTful APIを呼び出すと、クライアントはチュートリアルIDに基づいてチュートリアル名を削除するリクエストを送信します。すると、Webサービスは送信されたチュートリアル名をコレクションから削除します。
実行する Fiddler ツールを起動し、以下の手順を実行してください。
- コンポーザーセクションに移動してください。これは、任意のWebアプリケーションに送信できるリクエストを作成するために使用されます。
- リクエストタイプが「DELETE」で正しいことを確認してください URL 攻撃を受けているが、我々の場合は http://localhost:52645/TutorialService.svc/Tutorialリスト内の文字列を削除するために使用されるIDが、 URL パラメータとして。RESTの例では1を送信しているので、2は削除されます。nd 私たちのコレクションに含まれる要素は「キュー」です。
最後に、実行ボタンをクリックします。 Fiddlerこれにより、Webサービスからデータ「キュー」を削除するようWebサービスにリクエストが送信されます。
さて、チュートリアルにアクセスすると URL チュートリアルリストにすべての文字列を表示すると、「Queues」の値がなくなっていることに気づくでしょう。
これは、WebサービスへのDELETEリクエストが正常に実行されたことを示しています。チュートリアル文字列リストのインデックス番号1の要素が正常に削除されました。
RESTful APIのベストプラクティス
動作するREST APIを構築することは第一歩に過ぎません。拡張性と保守性を維持するAPIを構築するには、規律が必要です。以下のプラクティスは、エンドポイントを予測可能で安全に保ち、他の開発者やAIエージェントが容易に利用できるようにします。
- 動詞ではなく名詞を使用してください。 URLs. エンドポイントなど /従業員/1 より明確 /getEmployee?id=1HTTP動詞が既にその動作を説明しているためです。
- 意味のあるステータスコードを返します。 成功した場合は200、リソースが作成された場合は201、不正なリクエストの場合は400、不正アクセスの場合は401、リソースが見つからない場合は404、サーバーエラーの場合は500を返します。
- APIのバージョン管理を行う。 バージョンセグメントを追加する例: /v1/ この方法を使えば、既存の顧客に影響を与えることなくサービスを進化させることができます。
- すべてのエンドポイントを保護してください。 HTTPSとAPIキーまたはOAuth 2.0トークンを使用し、すべての受信入力を検証してください。
- ページネーションとフィルタリングに対応しています。 大量のデータをページ単位で返すことで、応答速度が速くなり、サーバー負荷が軽減されます。
これらの規約に従うことで、RESTful Web サービスへの統合が直感的になり、利用者がモバイルアプリ、パートナーシステム、自動化された AI ワークフローのいずれであっても問題なく利用できます。




























