サービス通信とRESTAPIの概念
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
RESTAPIの概要
RESTはステートレスアーキテクチャです。RESTは、ネットワークを介して通信するアプリケーションを構築するために使用され、2000年に発明および導入され、マシン側の通信用のプロトコルを提供します。クライアントとサーバー。ほとんどの場合、このアーキテクチャは、ハイパーテキスト転送プロトコル(HTTP)と呼ばれるプロトコルを使用してデバイス間で通信します。
RESTアーキテクチャが導入される前は、プログラマーは次のような基本的な概念を持つ複雑な通信アーキテクチャを使用していました。
- Simple Object Access Protocol(大まかに基本的なオブジェクトアクセスプロトコルとして翻訳されます)は、 SOAPと略されます。詳細はこちら
- リモートプロシージャコール(リモートプロシージャコール)はRPCと略されます。詳細はこちら
- Common Object Request Broker Archittechtureは、 COBRAと略されます。詳細はこちら
RESTはWebサービスに使用される軽量アーキテクチャであると一時的に理解しています。多くの異なる視点で、httpプロトコルに基づくWWW(ワールドワイドウェブ)はRESTベースのアーキテクチャをもたらしました。 httpプロトコルを使用するアプリケーションは依然として人気があり強力であるため、RESTはインターネットに最適です。 (理解できない場合は、ブラウザでドメイン名web888.vnを入力すると、ブラウザがドメイン名文字列の前に自動的にhttp://またはhttps://を追加し、さらに一部のWebサイトはhttpを追加することを想像してください。 :/ /www.tenmien.com、これは、ブラウザがWebアプリケーションにアクセスするときにhttpプロトコルをデフォルトとして設定することを意味します)
RESTは、概念的にCreate、Read、Update、Delete(CRUD)という名前の4つの操作でクライアント側の要求に応答します。 RESTfulアプリケーションは、データの読み取り、追加、更新、または削除に使用されるHTTPリクエスト(リクエスト)を送信します。つまり、RESTは理解しやすいアーキテクチャを提供するため、データを必要に応じて操作およびカスタマイズでき、C#、Java、Perlなどの言語の標準ライブラリ機能として提供されます。
このRESTアーキテクチャは非常に包括的ですが、つまり、完全な機能を提供し、すべてを実行すると呼ぶことができますが、これらのことは、いわゆるWebサービス(Webサービス)、W3Cでは推奨されないREST、およびデフォルトのメカニズムを介して実行できます。
RESTの原則
RESTスタイルは、一般的に使用されるアーキテクチャを作成するために使用される一連の制約を定義することです。これらの制約は、RESTアーキテクチャを他のアーキテクチャと区別する原則または特性です。
- クライアント/サーバー通信:基本的に2つの層に分かれています:クライアントとサーバーは2つの別個のコンポーネントであり、RESTfulアプリケーションはそれらが機能することを保証し、クライアント(クライアント)がサーバー(サーバー)と通信するのを支援します。
- ステートレスネス:クライアントの状態情報はサーバーに保存されません。つまり、各クライアント側の要求には必要なすべての情報が含まれ、サーバーはその情報を受信してタスクを実行します。これにより、サーバーはクライアント側のタスク、各通信セッションの状態を理解でき、クライアントに返されるデータには、各要求(クエリ)のセッション情報も含まれます。 Stelessnessは、タスクの目的を達成するためにサーバーとクライアントの間で通信するための緊密なメカニズムを提供するのに役立ちます
- キャッシュ可能性:クライアントは返されたデータを一時的にキャッシュし、データがキャッシュ可能かどうかを自分で説明できます。キャッシュ可能である場合、データは次の応答に再利用され、応答時間を短縮できます。
- 統一されたインターフェース:すべてのコンポーネントとの対話を容易にする標準インターフェース。これにより、さまざまなサービスとの対話が簡素化されます。また、標準を変更できないという裏側で、開発の変更がアプリケーションの他のコンポーネントに影響を与えないようにするのにも役立ちます。
- 階層化システム:セキュリティ、負荷分散、キャッシュなどの特定の目的でクライアントとサーバー間の通信を中断できるプロキシなどの仲介者。また、クライアントは、サーバーと通信しているか、仲介者と通信しているかを判断できません。
- コードオンデマンド:これは、サーバーがプログラムをダウンロードしてクライアント上で実行できるようにすることで、クライアントの機能を一時的に拡張する任意の制約です。たとえば、クライアントはjavascriptコードを実行して、その上で実行されている別のサービスと対話できます。
RESTとSOAPを比較する
多くのプログラマー(私自身を含む)は、RESTがSOAPよりも適切である理由を尋ねます。最近ではSOAPにアクセスすることはめったにないため、初心者にとっては非常に困難です。まず、SOAPはプロトコルであり、RESTはアーキテクチャスタイルであるため、RESTとSOAPを直接比較することは事実上不可能です。
ただし、SOAPとRESTの評価に役立つポイントは次のとおりです。
相違点 | 石鹸 | 休み |
クライアントとサーバーの実装間の一貫性 | クライアントとサーバーの間には、カスタムコンピューターアプリケーションなどのサーバーに関連付けられた緊密な契約が存在します。これらのいずれかが変更されると、通信プロセスのすべてが中断されます。 | ブラウザなどの緩く結合されたメカニズムであるRESTクライアントは、アプリケーションが適応する一般的な標準化されたメソッドとプロトコルを共有するクライアントアプリケーションです。プロトコル標準に違反する追加のメソッドは定義されていません。変更はより簡単に処理されます |
オリエンテーション | 主題 | 資力 |
サイズ | 重い | 光 |
状態 | ステートフル | ステートレス |
標準 | 明確なデータ標準 | データ標準が明確ではない |
速度 | 通信ごとに速度が低下し、より多くのリソースと帯域幅を消費します | より少ない帯域幅とリソースを消費することにより、より高速に |
通信規格 | eXtensible Markup Language(XML) | メッセージコントロールを使用して、XML、プレーンテキスト、JSONなどの多くの最新のデータ構造で解釈します |
実装 | より複雑(難しい) | より簡単に |
クライアント | 対話する前に、使用中のデータアーキテクチャを完全に理解する必要があります | エントリポイントとリターンデータ型を除いて、APIの知識は必要ありません |
RESTfulWebサービスのリソース
RESTful Webサービスは、REST APIアーキテクチャから進化したWebテクノロジの通信ビジネス(サービス)です。事前定義されたURI( Uniform Resource Identifier )があり、HTTPメソッドを指示するビジネスを参照します。
RESTful APIでは、すべての問題は概念(リソース)をリソースとして変換できることに関するものです。次のように理解できます。ディレクティブAPIメソッドを実装するたびに、リソースを操作します。これは、ドキュメント、画像、ファイル、ウェブの場合があります。ページ….リソースには、内部にデータを含むタイプ(データとして視覚化できます)があり、それを操作するためのメソッドのコレクションがあり、場合によっては他のリソースとの関係があります。
RESTのリソースは、Cプログラミング言語での学生管理、クラシックの追加、編集、削除の問題など、オブジェクト指向プログラミング言語のオブジェクトの概念と同等です。各変数は、学生のデータ構造(名前、年齢、学年など)を表します。 )、新しいスタイルの構文を持つ最新のプログラミング言語では、それはオブジェクトです。そして、それらを追加および削除するために、RESTは、CRUDの概念を備えたいくつかの基本的なメソッドを提供します。ただし、実際にはもっと多くの方法を使用できますが、通常は次の4つの方法で十分です。
- POST(作成):新しいリソースを初期化するか、状況によっては既存のリソースを更新するために使用することもできます
- GET :(読み取り)は、通常、オブジェクトまたはオブジェクトのリストを取得するために使用される読み取り専用リソースを取得します。
- PUT :(更新)利用可能なリソースを更新します
- 削除:(削除)リソースを削除します
リソース(リソース)は完全にリストにグループ化できます。各リストはリソース(リソース)でもあり、そのように理解できます。このリストは並べ替えられない場合があり、均一で標準的なデータ構造を持ち、そのデータをさらに処理するために使用できます。配列への解析、プリミティブデータ型への正規化、ユーザーインターフェイスの表示などのプログラミング言語で…。
RESTサーバーはリソースへのアクセスを許可し、クライアントはそれらを表します。各リソースには、パス上の標準URI(通常はパラメーター、slug-伝送パスの要素)に基づく一意の識別子があります。たとえば、タスクを管理するためにリソースと連携するエンドポイントを表すように示されているapiエンドポイント(オブジェクトとして理解できます):
リソース表現の場合、RESTは、厳密(XML)から最新(JSON)、またはプレーンテキスト(PLAINTEXT)までのさまざまなデータ構造をサポートします。現在および近い将来、JSONはWebサービスを使用するときに依然として最も人気があります。
HTTPメッセージ
HTTPメッセージはHTTPと通信するときの応答メッセージとして理解できます。RESTfulWebサービスはHTTPに依存して通信を開始したり、クライアントがサーバーと通信したときにメッセージを発行したりします。メッセージの処理中に、クライアントはサーバーにHTTP要求を送信し、サーバーはHTTP応答と呼ばれるパケットをクライアントに返します。要求と応答のメッセージには、メタデータと呼ばれるデータデータに関する情報を含むメッセージコンテンツ(メッセージ)が含まれます。構造は次のとおりです。
HTTPリクエスト構造
- 動詞:GET、DELETE、PUT、POSTなどのHTTPメソッドを表します
- URI :サーバー上で動作する目的のリソースを識別する宛先パスとして大まかに理解できます
- HTTPバージョン:HTTPのバージョンを表します(例:v1.1)
- リクエストヘッダー:ファイルのメタデータと、標準のキーと値のペアが含まれます。たとえば、メタデータは、メッセージ本文のリクエストブラウザ情報、キャッシュ構成、および形式に追加されます。
- リクエスト本文:適切な形式のメッセージデータが含まれています
HTTP応答構造
- HTTPバージョン:HTTPのバージョンを表します(例:v1.1)
- 応答コード:要求されたリソースのステータスを示す3文字の英数字。たとえば、200は問題ありませんが、404はリソースが見つかりません
- 応答ヘッダー:キーと値のペアを持つ応答メッセージを含むメタデータがあります。たとえば、メタデータタグには、コンテンツの長さ、応答日、サーバータイプ、コンテンツタイプを含めることができます。
- 応答本文:適切な形式のファイルデータが含まれています
リクエストヘッダーの画像の例、
応答コード | 通知する | 説明 |
200 | わかった | 成功 |
201 | 作成した | 目的のリソースがPUTまたはPOSTメソッドを介して正常に作成または更新されたことを示し、ロケーションヘッダーを介してそのリソースへの接続を返します。 |
204 | コンテンツなし | 応答本体が白の場合に表示されます。たとえば、このコードは、DELETEリクエストが正常に実行されたときに表示されます |
304 | 変更なし | 条件付きGETリクエストがあり、応答本文が空で、ヘッダーに場所や日付などのメタデータがある場合に、帯域幅の使用量を減らすために使用します |
400 | 要求の形式が正しくありません | クライアント側の入力に、リクエストで指定された無効なデータがあることを示します。たとえば、欠測データや不適切なパラメータが含まれている可能性があります |
401 | 許可されていない | クライアントがアクセスを許可されていない(認証されていない)ことを示します |
403 | 禁断 | クライアントがクリックされてメソッドを実行したことを示します。たとえば、クライアントに管理者権限がないが、サーバーリソースでデータDELETE要求を実行したい場合に表示されるコードです。 |
404 | 見つかりません | メソッドが見つからなかったことを示します |
409 | 対立 | 要求されたメソッドの実行中に競合が発生したことを示します。たとえば、このコードは、クライアントがでリソースを追加しようとしたが、リソースがすでに存在する場合に表示されます。 |
500 | 内部サーバーエラー | メソッドの実行中にサーバーが例外をキャッチしたことを示します |
アクセスに使用されるソフトウェア
クライアント
Postmanソフトウェアは、RESTAPIにアクセスするときにクライアントとして使用できます
サーバ
サーバーでは、コーディングにフレームワークを使用する場合、フレームワーク構造に従ってサーバーのAPIを構築するメカニズムが確かにあります。学習していない場合は、クライアントを練習するために人気のあるAPIを提供するいくつかの企業にアプローチできます。コミュニケーション、例:
- Airtable:優れているがより開発された同様の機能を備えた行と列のデータベースストレージシステムであり、より多くの通信、編集、削除を行うためのAPIを提供します
- Mapbox API:無料の地図はオンラインで地図を描くことができるAPIを提供します
- Openweather:天気を取得するためのAPIを提供します
- ..。
上記の記事では、REST APIを使用してクライアントとサーバー間でやり取りする際の基本的な概念について説明します。読んだ後、アーキテクチャの概念とRESTAPIの使用方法をよりよく理解できることを願っています。成功します。