検索

この章は、API の理解における転換点を示します。コンポーネントについて見てきました。次に、概念がどのように結合されて API を形成するかを見ていきます。この章では、API を設計することによって API のコンポーネントを検討します。

データの整理

ナショナル ジオグラフィックは、2011 年にアメリカ人は 80 億枚の写真を撮影すると予測しています。これほど大量の写真があると、人それぞれ異なる方法で写真を整理していることが想像できます。すべてを 1 つのフォルダーに入れることを好む人もいます。年、月、イベントフォルダー階層ごとに整理する人もいます。

API を構築する際、企業は組織的に同様の考えを持っています。第 1 章で述べたように、API の目的は、コンピュータが企業のデータを簡単に操作できるようにすることです。企業は、すべてのデータに単一の URL を使用し、それらを簡単に検索できるようにすることを決定できます (すべての写真を 1 つのフォルダーに入れるなど)。あるいは、各タイプのデータには独自の URL があり、階層的に編成されています (写真にフォルダーやサブフォルダーがあるのと同じです)。各企業は、業界の既存の経験に基づいて、さまざまな形式に応じて API を構築する最適な方法を選択します。

開始するにはフォームを選択してください

API について議論するとき、「一時停止」や「休憩」という用語を聞いて、開発者が実際に開発に取り組んでいるのか、それとも休暇を取る予定なのか疑問に思うかもしれません。実際、これらは Web ベース API の 2 つの一般的なアーキテクチャの名前です。 SOAP (頭字語の略) は、リクエストとレスポンスの標準化された構造を備えた XML ベースの設計です。 Representational Transfer の略である REST は比較的オープン ソースであり、多数のプロトコルを提供していますが、API を設計する際に議論する必要がある領域が多く残されています。

このコースを通じて、私たちは REST API を好むことが主に分かるでしょう。 REST は信じられないほど高速であるため、この優先順位は圧倒的です。これは SOAP が悪いと言っているのではなく、SOAP には利点があります。ただし、REST は最もよく目にする API であるため、ここでは REST に焦点を当てて説明します。残りの部分では、REST API を作成することでコンポーネントについて学習します。

最初のリソース

第 2 章を振り返ると、リソースについて少し話しました。リソースは API 用語 (顧客とピザ) であることを思い出してください。これらは、API を介して世界とやり取りできるようにしたいものです。

企業が API の設計にどのように取り組むかを理解するために、それをピザ パーラーに関連付けてみましょう。

クライアントがピザ屋に連絡できるようにするには、いくつかのことを行う必要があります:

  1. どのようなリソースが利用可能かを判断します。
  2. これらのリソースに URL を割り当てます。
  3. クライアントがこれらのリソースに対して実行する必要があるアクションを決定します。
  4. 各ステップでどのようなデータが必要で、どのような形式にする必要があるかを調べます。

資源の確保が最初の難題です。この問題を解決する 1 つの方法は、典型的な対話を段階的に実行することです。ピザ屋の場合は、別のメニューがある場合があります。メニューにはさまざまなピザがあります。お客様が私たちにケーキを作りたいときは、注文する必要があります。この点では、メニュー、ピザ、顧客、注文は素晴らしいリソースのように思えます。まずは注文から始めましょう。

次のステップでは、これらの URL をリソースに割り当てます。可能性はたくさんありますが、幸いなことに、REST 規約はある程度のサポートを提供します。一般的な REST API では、リソースには 2 つの URL が割り当てられます。 1 つ目は、 /orders などのリソース名の複数形です。 2 番目は、リソース名の複数形に単一のリソースを指定する一意の識別子 ( /orders/ など) です。ここで、 はコマンドの一意の識別子です。これら 2 つの URL パターンは、API がサポートする最初のエンドポイントを形成します。これらは、 http://example.com/ のように URL の末尾に配置されるため、単にエンドポイントと呼ばれます。

リソースを選択して URL を割り当てたので、クライアントが実行できるアクションを決定する必要があります。 REST 規約によれば、複数のエンドポイント (/orders) が既存の注文の一覧表示と新しい注文の作成に使用されることがわかります。特定の注文の取得、更新、キャンセルに使用される一意の識別子 ( /orders/ ) を持つエンドポイントがあります。クライアントは、HTTP チャネルを介してリクエストでどのようなアクション (GET、POST、PUT、DELETE) を送信するかをサーバーに伝えます。

API は次のようになります。

| アクション |

| —————— |

| 既存の注文をリストする |

| order/1 | 注文 #1 の詳細を取得 |

| 注文 #2 の詳細を取得 |

| |

| /orders/1 | 注文 #1 をキャンセルします |

注文エンドポイントのアクションを具体化する最後のステップは、クライアントとサーバー間でどのようなデータを交換する必要があるかを決定することです。第 3 章のピザ屋の例を借りると、注文には生地と詰め物のタイプが必要であると言えます。クライアントとサーバー間で情報を転送するためのデータ形式も選択する必要があります。 XML と JSON はどちらも適切な選択肢ですが、読みやすさを考慮して JSON を選択します。

この時点で、機能する API が設計されました。 API を使用してクライアントとサーバーがどのように対話するかを次に示します。

リソースを接続する

私たちのピザ屋の API はシャープに見えます。これまでにないほど注文が入ってきています。実際、ビジネスが非常に好調だったので、顧客ロイヤルティに基づいて注文の追跡を開始することにしました。これを行う簡単な新しい方法は、新しい顧客リソースを追加することです。

注文と同様に、顧客リソースには特定のエンドポイントが必要です。以下で合意されているように、/customers と /customers/ は適切に連携します。詳細は省略しますが、各アクションが各エンドポイントに意味を追加し、そのデータが顧客を表すと仮定しましょう。すべてを完了したと仮定すると、別の興味深い疑問が生じます。注文とユーザー発見をどのように結び付けるかということです。

REST 実践者は、リソース関連の問題を解決する方法に夢中になっています。 /customers/5/orders は 5 番目の顧客の注文を指し、/customers/5/orders/3 は 5 番目の顧客の 3 番目の注文を指します。データ関連の詳細をもっと盛り込むことで物事をシンプルにするべきだと考える人もいます。このモードでは、注文作成の customer_id に注文情報を付けることができます。どちらも REST API で広く使用されているため、知っておく価値があります。

データの検索

システム内のデータが増加するにつれて、エンドポイントがすべてのレコードをリストすることは現実的ではなくなります。私たちのピザ レストランで 300 万件の注文が処理され、トッピングのうちペパロニが何個あるかを知りたい場合を想像してください。 /orders に GET リクエストを送信して 300 万件の注文をすべて受信することは役に立ちません。幸いなことに、REST にはデータを検索するための優れた方法があります。

URL には、まだ言及していないクエリ文字列というコンポーネントがあります。クエリとは、テキストの検索および文字列表現を指します。クエリ文字列は、URL を通じて情報を渡すために URL の末尾に挿入されるテキストです。たとえば、疑問符の後の情報はクエリ データです: http://example.com/orders?key=value。

REST API はクエリ文字列を使用して検索の詳細を定義します。これらの詳細はクエリ パラメーターと呼ばれます。 API は、どのパラメーターを受け取るかを決定し、それらの正確な名前を使用して検索を実装する必要があります。当社のピッツェリア API を使用すると、クライアントは URL: http://example.come/orders?topping=pepperoni を介して注文を検索できます。クライアントは、各パラメータを記号 (「&」) で区切ってリストすることにより、複数のパラメータをクエリできます。例: http://example.com/orders?topping=pepperoni&crust=thin。

クエリ文字列のもう 1 つの用途は、各リクエストで返されるデータの量を制限することです。通常、API は結果をグループ (100 または 500 レコード) に分割し、一度に 1 つのグループを返します。データを分割するプロセスはページング (単語をページに形成する比喩) と呼ばれます。クライアントがすべてのデータをスクロールできるようにするため、API はクエリ パラメーターをサポートし、クライアントが必要なデータのページを固定できるようにします。ピザ ショップ API では、顧客がページとサイズという 2 つのパラメーターを指定できるようにすることで、ページネーションをサポートしています。クライアントが GET/orders?page=2&size=200 のようなリクエストを行った場合、2 ページ目の結果、1 ページあたり 200 件の結果、および 201 ~ 400 件の注文が必要であることは誰もが知っています。

第 6 章の概要

この章では、REST API の設計方法を学びました。私たちは、API によってサポートされる基本的な機能と、コンピューターが簡単に同化できるようにデータを編成する方法を発見しました。

私たちが学んだ重要なポイント:

  • SOAP : API アーキテクチャーで標準化されたメッセージ形式。
  • REST: リソース センターの API アーキテクチャを制御します。
  • リソース : 顧客や注文などの API プロジェクトの名詞。
  • エンドポイント: API の一部を形成する URL。 REST では、各リソースに独自のエンドポイントがあります。
  • クエリ文字列: データをサーバーに渡すために使用される URL の一部。
  • クエリパラメータ: クエリ文字列で見つかった値 (topping=cheese)。
  • ページネーション: 構造を管理モジュールに分割するプロセス。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

PHPセッションからデータをどのように取得しますか?PHPセッションからデータをどのように取得しますか?May 01, 2025 am 12:11 AM

toretrievedatafrompsession、Startthessession withsession_start()andAccessvariablesshe $ _SessionArray.forexample:1)Startthessession:session_start()

セッションを使用してショッピングカートを実装するにはどうすればよいですか?セッションを使用してショッピングカートを実装するにはどうすればよいですか?May 01, 2025 am 12:10 AM

セッションを使用して効率的なショッピングカートシステムを構築する手順には、次のものがあります。1)セッションの定義と機能を理解します。セッションは、リクエスト全体でユーザーのステータスを維持するために使用されるサーバー側のストレージメカニズムです。 2)ショッピングカートに製品を追加するなど、基本的なセッション管理を実装します。 3)製品の量管理と削除をサポートし、高度な使用状況に拡大します。 4)セッションデータを持続し、安全なセッション識別子を使用することにより、パフォーマンスとセキュリティを最適化します。

PHPでインターフェイスをどのように作成して使用しますか?PHPでインターフェイスをどのように作成して使用しますか?Apr 30, 2025 pm 03:40 PM

この記事では、PHPでインターフェイスを作成、実装、および使用する方法について説明し、コード組織と保守性の利点に焦点を当てています。

crypt()とpassword_hash()の違いは何ですか?crypt()とpassword_hash()の違いは何ですか?Apr 30, 2025 pm 03:39 PM

この記事では、PHPのCrypt()とpassword_hash()の違いについて、パスワードハッシュの違いについて説明し、最新のWebアプリケーションの実装、セキュリティ、および適合性に焦点を当てています。

PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?PHPのクロスサイトスクリプト(XSS)をどのように防ぐことができますか?Apr 30, 2025 pm 03:38 PM

記事では、入力検証、出力エンコード、およびOWASP ESAPIやHTML浄化器などのツールを使用して、PHPのクロスサイトスクリプト(XSS)を防止します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。