レストAPIとは何ですか?

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-09 12:37:09
オリジナル
369 人が閲覧しました

What Is a REST API?

REST APIの詳細な説明:最も一般的に使用されているネットワークサービステクノロジーを理解しやすい

「表現状態転送」の略である

RESTは、現在最も広く使用されているネットワークサービステクノロジーです。その名前は少し抽象的ですが、REST APIは基本的に、2つのコンピューターシステムがWebブラウザーとサーバーで一般的なHTTPテクノロジーを使用して通信する方法です。

ソフトウェア開発では、システム間のデータ共有は常に基本的な要件です。たとえば、自動車保険を購入する場合、保険会社はお客様の個人情報と車両情報を取得する必要があるため、車両登録機関、信用機関、銀行、その他のシステムからデータをリクエストする必要があります。これらはすべて、保険会社が競争力のあるポリシーを提供できるかどうかを判断するために、リアルタイムで透過的に行われます。

API(アプリケーションプログラミングインターフェイス)は、システム間通信のためのインターフェイスを提供することにより、このようなシステム間通信を実現します。 RESTは広く採用されているAPIスタイルであり、一貫した予測可能な方法で内部および外部の関係者と通信するためにそれを使用します。これは、スタンプ、住所、封筒で手紙を何らかの方法で送信して、配信されて読むことを確認する方法に例えることができます。

RESTは、ソーシャルメディアアプリケーションのアカウント情報の取得と更新など、ネットワークシステムでの人々のやり取りによく使用されます。

キーポイント

  1. REST APIはHTTPを利用してコンピューターシステム間の通信を促進し、さまざまなサービス(車両登録機関、クレジット機関、銀行など)をリアルタイムでデータを共有できるようにし、それにより自動車保険の見積もりなどのサービスを提供します。
  2. REST APIは、クライアントサーバーアーキテクチャ、ステートレス性、キャッシュ、階層システムなど、ネットワークサービスを作成するための一連の提案に従い、ネットワークシステムと対話するためのシンプルで効果的な方法になります。
  3. REST APIの実装と使用は、エンドポイントの一貫性、バージョン制御、認証、セキュリティ、および複数のリクエストまたは不必要なデータの処理を検討する必要があります。

REST APIの例

ブラウザで次のリンクを開き、オープントリビアデータベースからランダムなコンピューター問題を要求します。

https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3

これは、RESTFUL WEBサービスとして実装されたパブリックAPIです(RESTコンベンションに続きます)。ブラウザは、次のような回答を含む単一のJSON形式のクイズ質問を表示します。

任意のHTTPクライアント(CURLなど)を使用して同じURLを要求し、応答を取得できます。
<code>{
  "response_code": 0,
  "results": [
    {
      "category": "Science: Computers",
      "type": "multiple",
      "difficulty": "easy",
      "question": "What does GHz stand for?",
      "correct_answer": "Gigahertz",
      "incorrect_answers": [
        "Gigahotz",
        "Gigahetz",
        "Gigahatz"
      ]
    }
  ]
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

httpクライアントライブラリは、JavaScript、node.js、およびdenoのフェッチ、

REST APIおよびその他のテクノロジー

長年にわたり、さまざまなデータ通信基準が継続的に開発されてきました。 Corba、SOAP、XML-RPCなどのオプションに遭遇した可能性があります。ほとんどは厳格な情報ルールを持っています。

RESTは2000年にRoy Fieldingによって定義され、他のテクノロジーよりもはるかに簡単です。それは標準ではなく、Restful Webサービスに関する一連の提案と制約です。これらには次のものが含まれます

    クライアントサーバー:システムAは、システムBでホストされているURLへのHTTP要求を発行し、システムBは応答を返します。これは、ブラウザが動作するのと同じです。ブラウザは特定のURLを要求します。リクエストは、通常HTMLページを返すWebサーバーにルーティングされます。このページには、画像、スタイルシート、およびJavaScriptへの参照が含まれている場合があり、さらにリクエストと応答が発生します。
  • キャッシュ可能:応答は、キャッシュ可能またはキャッシュできないものとして定義する必要があります。キャッシュは、同じURLの応答を再生する必要がないため、パフォーマンスを向上させます。特定の時間に特定のユーザーのプライベートデータは、通常キャッシュされていません。
  • 水分補給:クライアントに要求すると、実際のサーバー、プロキシ、またはその他の仲介者と通信しているかどうかを知る必要はありません。
  • RESTFUL WEBサービスを作成します

RESTFUL WEBサービスリクエストには以下が含まれます

エンドポイントURL。 RESTFUL APIを実装するアプリケーションは、ドメイン名、ポート、パス、および/またはクエリ文字列など、1つ以上のURLエンドポイントを定義します。
  1. https://mydomain/user/123?format=json httpメソッド。アプリケーションの作成、読み取り、更新、削除(CRUD)操作に対応するエンドポイントには、さまざまなHTTPメソッドを使用できます。

  2. httpメソッド

    crud operation get読み取り 要求されたデータを返します post作成 新しいレコードを作成を作成します DELETE DELETEDELETE既存のレコードを削除します 例: のリクエストを取得システム上の登録ユーザーのリストに返します POSTリクエストのプリンシパルデータを使用してID 123を使用してユーザーを作成します(以下を参照)。応答はIDを返します。

    ユーザー123を更新して、ユーザー123の詳細を返します

    • /user/削除ユーザー123
    • のリクエストの /user/
  3. httpヘッダー。認証トークンやCookieなどの情報は、HTTPリクエストヘッダーに含めることができます。 /user/123
  4. /user/123サブジェクトデータ。データは通常、HTMLがコミットするのと同じ方法で、またはJSONエンコードされたデータ文字列を単一の送信して、HTTP本体を介して送信されます。

What Is a REST API?

REST API Response

応答ペイロードは、データ、HTML、画像、オーディオファイルなどの実用的なコンテンツになります。データ応答は通常JSONエンコードされていますが、XML、CSV、単純な文字列、またはその他の形式でも使用できます。リクエストで返される形式を指定できるようにすることができます - たとえば、/user/123?format=jsonまたは/user/123?format=xml

適切なHTTPステータスコードも、応答ヘッダーに設定する必要があります。 200 OKはリクエストを成功させるために使用されますが、記録が作成されたときに作成された201を返すこともできます。エラーは、400の悪いリクエスト、404が見つかっていない、401の不正などの適切なコードを返す必要があります。

キャッシュコントロールまたは期限切れのディレクティブを含む他のHTTPヘッダーは、応答が「古く」と見なされる前にキャッシュできる期間を指定するように設定できます。

ただし、厳格なルールはありません。エンドポイントURL、HTTPメソッド、ボディデータ、および応答タイプは、好みに応じて実装できます。たとえば、投稿、配置、およびパッチは頻繁に使用されることが多いため、必要に応じてレコードを作成または更新します。

rest api "hello world"の例

次のnode.jsコードでは、Expressフレームワークを使用してRESTFUL WEBサービスを作成します。単一の

エンドポイントは、HTTP GETリクエストに応答します。 /hello/

node.jsがインストールされていることを確認し、

という名前の新しいフォルダーを作成します。次のコンテンツを使用して、このフォルダーに新しいrestapiファイルを作成します。 package.json コマンドラインから

実行して依存関係を取得し、次のコードを使用して
<code>{
  "response_code": 0,
  "results": [
    {
      "category": "Science: Computers",
      "type": "multiple",
      "difficulty": "easy",
      "question": "What does GHz stand for?",
      "correct_answer": "Gigahertz",
      "incorrect_answers": [
        "Gigahotz",
        "Gigahetz",
        "Gigahatz"
      ]
    }
  ]
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ファイルを作成します。

npm installindex.jsを使用して、コマンドラインからアプリケーションを起動し、ブラウザで

を開きます。次のJSONは、GETリクエストに応じて表示されます:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
ログイン後にコピー
ログイン後にコピー

npm startAPIではカスタム名も許可されているため、http://localhost:8888/hello/return:

<code>{
  "name": "restapi",
  "version": "1.0.0",
  "description": "REST test",
  "scripts": {
    "start": "node ./index.js"
  },
  "dependencies": {
    "express": "4.18.1"
  }
}</code>
ログイン後にコピー

クライアントの休憩リクエストとcorshttp://localhost:8888/hello/everyone/

ブラウザでurl
// simple Express.js RESTful API
'use strict';

// initialize
const
  port = 8888,
  express = require('express'),
  app = express();

// /hello/ GET request
app.get('/hello/:name?', (req, res) =>
  res.json(
    { message: `Hello ${req.params.name || 'world'}!` }
  )
);

// start server
app.listen(port, () =>
  console.log(`Server started on port ${port}`);
);
ログイン後にコピー
で起動された次のHTMLページを考えてみましょう:

Fetchコールは同じAPIリクエストを実行し、Browserコンソールに予想どおりhttp://localhost:8888/が表示されます。

ただし、Restful WebサービスがWeb上の<?>ドメイン名でオンラインであると仮定します。ページjavascript
{
  "message": "Hello world!"
}
ログイン後にコピー
urlはそれに応じて変更されますが、ブラウザで

を開くと、コンソールエラーが返されます。 Object { message: "Hello world!" }

セキュリティ上の理由から、ブラウザはクライアントXMLHTTPREQUESTおよびFetch API呼び出しをコールページと同じドメインでホストすることのみを許可します。

http://mydomain.com/hello/幸いなことに、オリジンのリソース共有(CORS)を使用すると、このセキュリティ制限を回避できます。設定fetch()HTTP応答ヘッダーは、ブラウザにリクエストを許可するように指示します。特定のドメイン名またはhttp://localhost:8888/(すべてのドメイン名を表す)に設定できます(上記のクイズAPIに示すように)。 Cross-Origin Request Blocked

Web Service APIコードを変更して、ドメイン名で実行されるクライアントスクリプトへのアクセスを許可できます。

<code>{
  "response_code": 0,
  "results": [
    {
      "category": "Science: Computers",
      "type": "multiple",
      "difficulty": "easy",
      "question": "What does GHz stand for?",
      "correct_answer": "Gigahertz",
      "incorrect_answers": [
        "Gigahotz",
        "Gigahetz",
        "Gigahatz"
      ]
    }
  ]
}</code>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
または、Express.jsミドルウェア関数を使用して、各エンドポイントリクエストにヘッダーを接続できます。

ブラウザは、REST APIに2つのリクエストを行うことに注意してください:
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
ログイン後にコピー
ログイン後にコピー

HTTPオプション要求同じURLを指して、HTTP応答ヘッダーが有効かどうかを判断する
    実際のレストコール
  1. Access-Control-Allow-Origin
  2. サーバーがオプションリクエストメソッドを受信すると、
  3. http応答ヘッダーを設定し、仮想空の応答を返すことができます。
REST API Challenge

Access-Control-Allow-OriginRESTの成功は、主にその単純さによるものです。開発者は、好みに応じてRestful APIを実装できますが、これはさらなる課題につながる可能性があります。 RESTFUL APIの構築に関する13のベストプラクティスを詳しく調べてください。

エンドポイントの一貫性

次のエンドポイントを検討してください:

  • /user/123
  • /user/id/123
  • これらはすべて、ユーザー123データを取得するための有効なオプションです。より複雑な操作を実行すると、組み合わせの数がさらに増加し​​ます。たとえば、「A」から始まり、CompanyXで動作する10個の姓を返し、レコード51から始まる生年月日までに逆順序で並べ替えます。 /user/?id=123
  • 最終的には、URLのフォーマットは関係ありませんが、APIの一貫性は非常に重要です。これは、多くの開発者がいる大規模なコードベースにとって課題になる可能性があります。

REST APIバージョンコントロール

APIの変更は避けられませんが、エンドポイントのURLが失敗することはないはずです。そうしないと、それらを使用するアプリケーションが破損します。

APIは通常、互換性の問題を回避するためにバージョン制御を採用します。たとえば、

を置き換えます。新しいエンドポイントと古いエンドポイントの両方がアクティブのままです。残念ながら、これには複数の履歴APIを維持する必要があります。最終的には古いバージョンを破棄できますが、このプロセスには慎重な計画が必要です。

REST API Authentication/2.0/user/123 /user/123上に示すクイズAPIは

open

:任意のシステムは許可なしにジョークを取得できます。これは、プライベートデータにアクセスしたり、更新を許可したり、リクエストを削除したりするAPIでは実行不可能です。

RESTFUL APIと同じドメインにあるクライアントアプリケーションは、他のHTTP要求と同様にCookieを送信および受信します。 (古いブラウザのfetch()には

初期化オプションを設定する必要があることに注意してください。)したがって、API要求を検証して、ユーザーがログインして適切なアクセス許可を確保することができます。 サードパーティのアプリケーションは、他の認証方法を使用する必要があります。一般的な認証オプションは次のとおりです

  • http基本認証。リクエストヘッダーにbase64エンコードを含むHTTP認証ヘッダーを渡します。
  • APIキー。サードパーティのアプリケーションを付与すると、特定のアクセス許可があるか、特定のドメインのみに限定される可能性のあるキーを発行することにより、APIを使用する許可があります。キーは、HTTPヘッダーまたはクエリ文字列のすべての要求で渡されます。
  • oauth。リクエストが行われる前に、クライアントIDと可能なクライアントキーをOAUTHサーバーに送信することにより、トークンを取得する必要があります。 OAuthトークンは、有効期限が切れるまで各API要求で送信されます。
  • json webトークン(JWT)。デジタルで署名された認証トークンは、リクエストおよび応答ヘッダーで安全に送信されます。 JWTを使用すると、サーバーがアクセス権限をエンコードできるため、データベースまたはその他の認定システムを呼び出す必要はありません。

API認証は、使用環境によって異なります:

  • 場合によっては、サードパーティのアプリケーションは、特定の権限を持つ他のログインユーザーと見なされます。たとえば、マップAPIは、2つのポイント間のルートを呼び出しアプリケーションに戻すことができます。アプリケーションが有効なクライアントであることを確認する必要がありますが、ユーザーの資格情報を確認する必要はありません。
  • 他の場合、サードパーティのアプリケーションは、電子メールコンテンツなど、単一のユーザーに属するプライベートデータを要求しています。 REST APIはユーザーとそのアクセス許可を識別する必要がありますが、どのアプリケーションがAPIを呼び出しているかを気にしない場合があります。

REST API Security

RESTFUL APIは、アプリケーションにアクセスして操作する別の方法を提供します。高度に視聴されたハッカーターゲットではない場合でも、動作が不十分なクライアントは、毎秒数千のリクエストを送信してサーバーをクラッシュさせることができます。

セキュリティはこの記事の範囲内ではありませんが、一般的なベストプラクティスには次のものがあります。

    https
  • を使用します
  • 強力な認証方法を使用してください
  • CORSを使用して、クライアントの呼び出しを特定のドメインに制限します
  • は最小限の機能を提供します。つまり、不要な削除オプションを作成しないでください
  • すべてのエンドポイントURLと主要なデータを確認します
  • クライアントjavascriptでAPIトークンを公開しないでください
  • 不明なドメインまたはIPアドレスからのアクセスをブロック
  • 予期しない大規模なペイロードを停止します
  • レート制限を検討します。つまり、同じAPIトークンまたはIPアドレスを使用した要求は、1分あたりnに制限されています
  • 適切なHTTPステータスコードとキャッシュヘッダー
  • で応答します
  • 録音のリクエストと調査
  • を調査します
  • 複数のリクエストと不必要なデータ

RESTFUL APIは、その実装により制限されます。応答には、必要以上のデータが含まれている場合があります。または、すべてのデータにアクセスするには、さらなるリクエストが必要です。

著者と予約のデータへのアクセスを提供するRESTFUL APIを検討してください。トップ10のベストセラーからデータを表示するには、クライアントができます。

販売数量でトップ10をリクエストします(ベストセラーが望ましい)

詳細。応答には、各著者IDの本のリストが含まれています。
  • 各著者の詳細情報を取得するには、最大10 /book/リクエストを送信します。
  • /author/{id}これはn 1問題と呼ばれます。
  • これが一般的なユースケースである場合、RESTFUL APIを変更して、返された各本には、名前、年齢、国、伝記などの著者の詳細が含まれているようにすることができます。他の本の詳細を提供することもできますが、これにより応答ペイロードが大幅に増加する可能性があります。

    不必要な大きな応答を避けるために、APIを調整して、著者の詳細をオプションにすることができます。 API著者が対処する必要があるオプションの数は眩しい場合があります。

    ?author_details=fullGraphQLはREST APIの問題を解決できますか?

    レストパズルLED FacebookがWebサービスクエリ言語であるGraphQLを作成しました。それをWebサービスSQLと考えてください:単一の要求は、必要なデータとそれを返す方法を定義します。

    GraphQLは、Restful APIによってもたらされる課題のいくつかを解決しますが、他のAPIを紹介します。たとえば、GraphQL応答のキャッシュが困難になります。

    クライアントがFacebookと同様の問題を抱える可能性は低いため、REST Ful APIが実際の制限を超えた後、GraphQLを検討する価値があるかもしれません。

    REST APIリンクと開発ツール

    すべての言語には、安らかなAPI開発に役立つ多くのツールがあります。注目すべきオプションは次のとおりです

    swagger:休憩の設計、記録、シミュレーション、テスト、監視に役立つさまざまなツール

      postman:RESTFUL APIテストアプリケーション
    • hoppscotch:Postmanのオープンソース、Webベースの代替
    • ジョーク、通貨変換、ジオコード、政府のデータ、および考えることができるすべてのトピック用の多くのパブリックレストAPIもあります。多くは無料ですが、一部はAPIキーを登録するか、他の認証方法を使用する必要があります。カテゴリリストには次のものが含まれます。

    任意のapi

      apiリスト
    • public apis
    • Google APIS Explorer
    • 独自のWebサービスを実装する前に、自分のプロジェクトでRestful APIを使用してみてください。または、Facebook、Github、Google、その他多くの巨人をフォローして、独自のRestful APIを作成することもできます。
    rest api

    に関するよくある質問

    REST APIとは何ですか?

    REST API(詳細な状態転送アプリケーションプログラミングインターフェイス)は、RESTアーキテクチャスタイルの原則を使用して、ソフトウェアアプリケーションがインターネットを介して通信および相互作用することを可能にする一連のルールと規則です。

    REST APIの主な特徴は何ですか? REST APIは、リソースの使用、ステートレスクライアントサーバー通信、標準のHTTPメソッド(GET、POST、PUT、削除)、およびURLを使用してリソースへのアクセスと操作を含む統合インターフェイスによって特徴付けられます。

    なぜそれがREST APIと呼ばれるのですか?

    REST API(詳細な状態輸送アプリケーションプログラミングインターフェイス)は、REST(詳細な状態輸送)と呼ばれるアーキテクチャスタイルにちなんで命名されています。 「休息」という用語は、2000年の博士論文でロイ・フィールディングによって提案されました。彼は、この建築スタイルの原則と制約を概説しました。 「REST」という名前は、サーバーからクライアントにリソースステータスの表現を転送するという概念を表しています。

    REST APIを使用することの利点は何ですか? REST APIは、シンプルさ、スケーラビリティ、統合の容易さ、プラットフォームの独立性、懸念の分離など、多くの利点を提供します。また、既存のHTTPインフラストラクチャを活用しています。これは、Webおよびモバイルアプリケーションに最適です。

    REST APIはWebアプリケーションに限定されていますか?いいえ、REST APIはWebアプリケーションに限定されません。これらは、Webアプリケーション、モバイルアプリケーション、さらにはサーバー間通信など、さまざまな種類のソフトウェアアプリケーション間の通信を促進するために使用できます。

    REST APIの4つのコンポーネントは何ですか?

    REST APIは、一般的に「4つの柱」として知られている4つの主要なコンポーネントで構成されています。これらのコンポーネントは、RESTアーキテクチャスタイルにおけるAPIの構造、行動、および相互作用を定義するのに役立ちます。 4つのコンポーネントは、リソース、HTTPメソッド(動詞)、表現、および一般的なインターフェイスです。

    REST APIの構築にどのツールまたはライブラリを使用できますか? Express.js(node.js)、Flask(Python)、Ruby on Rails(Ruby)、Django(Python)、Spring Boot(Java)など、REST APIを構築するための多くのツールとフレームワークがあります。

    この応答は、元の画像のフォーマットと配置を維持しています。

以上がレストAPIとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート