REST APIの詳細な説明:最も一般的に使用されているネットワークサービステクノロジーを理解しやすい
「表現状態転送」の略であるRESTは、現在最も広く使用されているネットワークサービステクノロジーです。その名前は少し抽象的ですが、REST APIは基本的に、2つのコンピューターシステムがWebブラウザーとサーバーで一般的なHTTPテクノロジーを使用して通信する方法です。
ソフトウェア開発では、システム間のデータ共有は常に基本的な要件です。たとえば、自動車保険を購入する場合、保険会社はお客様の個人情報と車両情報を取得する必要があるため、車両登録機関、信用機関、銀行、その他のシステムからデータをリクエストする必要があります。これらはすべて、保険会社が競争力のあるポリシーを提供できるかどうかを判断するために、リアルタイムで透過的に行われます。
API(アプリケーションプログラミングインターフェイス)は、システム間通信のためのインターフェイスを提供することにより、このようなシステム間通信を実現します。 RESTは広く採用されているAPIスタイルであり、一貫した予測可能な方法で内部および外部の関係者と通信するためにそれを使用します。これは、スタンプ、住所、封筒で手紙を何らかの方法で送信して、配信されて読むことを確認する方法に例えることができます。
RESTは、ソーシャルメディアアプリケーションのアカウント情報の取得と更新など、ネットワークシステムでの人々のやり取りによく使用されます。
ブラウザで次のリンクを開き、オープントリビアデータベースからランダムなコンピューター問題を要求します。
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のフェッチ、 長年にわたり、さまざまなデータ通信基準が継続的に開発されてきました。 Corba、SOAP、XML-RPCなどのオプションに遭遇した可能性があります。ほとんどは厳格な情報ルールを持っています。 RESTは2000年にRoy Fieldingによって定義され、他のテクノロジーよりもはるかに簡単です。それは標準ではなく、Restful Webサービスに関する一連の提案と制約です。これらには次のものが含まれます
httpメソッド crud
ユーザー123を更新して、ユーザー123の詳細を返します 応答ペイロードは、データ、HTML、画像、オーディオファイルなどの実用的なコンテンツになります。データ応答は通常JSONエンコードされていますが、XML、CSV、単純な文字列、またはその他の形式でも使用できます。リクエストで返される形式を指定できるようにすることができます - たとえば、 適切なHTTPステータスコードも、応答ヘッダーに設定する必要があります。 200 OKはリクエストを成功させるために使用されますが、記録が作成されたときに作成された201を返すこともできます。エラーは、400の悪いリクエスト、404が見つかっていない、401の不正などの適切なコードを返す必要があります。
エンドポイントは、HTTP GETリクエストに応答します。 という名前の新しいフォルダーを作成します。次のコンテンツを使用して、このフォルダーに新しい
クライアントの休憩リクエストとcors Fetchコールは同じAPIリクエストを実行し、Browserコンソールに予想どおり を開くと、コンソールエラーが返されます。
Web Service APIコードを変更して、ドメイン名で実行されるクライアントスクリプトへのアクセスを許可できます。
次のエンドポイントを検討してください: REST APIバージョンコントロール APIの変更は避けられませんが、エンドポイントのURLが失敗することはないはずです。そうしないと、それらを使用するアプリケーションが破損します。 を置き換えます。新しいエンドポイントと古いエンドポイントの両方がアクティブのままです。残念ながら、これには複数の履歴APIを維持する必要があります。最終的には古いバージョンを破棄できますが、このプロセスには慎重な計画が必要です。 REST API Authentication 初期化オプションを設定する必要があることに注意してください。)したがって、API要求を検証して、ユーザーがログインして適切なアクセス許可を確保することができます。
サードパーティのアプリケーションは、他の認証方法を使用する必要があります。一般的な認証オプションは次のとおりです API認証は、使用環境によって異なります: RESTFUL APIは、アプリケーションにアクセスして操作する別の方法を提供します。高度に視聴されたハッカーターゲットではない場合でも、動作が不十分なクライアントは、毎秒数千のリクエストを送信してサーバーをクラッシュさせることができます。 セキュリティはこの記事の範囲内ではありませんが、一般的なベストプラクティスには次のものがあります。
著者と予約のデータへのアクセスを提供するRESTFUL APIを検討してください。トップ10のベストセラーからデータを表示するには、クライアントができます。
販売数量でトップ10をリクエストします(ベストセラーが望ましい) これが一般的なユースケースである場合、RESTFUL APIを変更して、返された各本には、名前、年齢、国、伝記などの著者の詳細が含まれているようにすることができます。他の本の詳細を提供することもできますが、これにより応答ペイロードが大幅に増加する可能性があります。
GraphQLは、Restful APIによってもたらされる課題のいくつかを解決しますが、他のAPIを紹介します。たとえば、GraphQL応答のキャッシュが困難になります。 クライアントがFacebookと同様の問題を抱える可能性は低いため、REST Ful APIが実際の制限を超えた後、GraphQLを検討する価値があるかもしれません。 REST APIリンクと開発ツール swagger:休憩の設計、記録、シミュレーション、テスト、監視に役立つさまざまなツール 任意のapi に関するよくある質問
REST APIを使用することの利点は何ですか? REST APIは、シンプルさ、スケーラビリティ、統合の容易さ、プラットフォームの独立性、懸念の分離など、多くの利点を提供します。また、既存のHTTPインフラストラクチャを活用しています。これは、Webおよびモバイルアプリケーションに最適です。 REST APIはWebアプリケーションに限定されていますか?いいえ、REST APIはWebアプリケーションに限定されません。これらは、Webアプリケーション、モバイルアプリケーション、さらにはサーバー間通信など、さまざまな種類のソフトウェアアプリケーション間の通信を促進するために使用できます。 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を構築するための多くのツールとフレームワークがあります。 この応答は、元の画像のフォーマットと配置を維持しています。REST APIおよびその他のテクノロジー
クライアントサーバー:システムAは、システムBでホストされているURLへのHTTP要求を発行し、システムBは応答を返します。これは、ブラウザが動作するのと同じです。ブラウザは特定のURLを要求します。リクエストは、通常HTMLページを返すWebサーバーにルーティングされます。このページには、画像、スタイルシート、およびJavaScriptへの参照が含まれている場合があり、さらにリクエストと応答が発生します。
RESTFUL WEBサービスリクエストには以下が含まれます
https://mydomain/user/123?format=json
httpメソッド。アプリケーションの作成、読み取り、更新、削除(CRUD)操作に対応するエンドポイントには、さまざまなHTTPメソッドを使用できます。
operation
get 読み取り 要求されたデータを返します
post 作成 新しいレコードを作成
を作成します
DELETE DELETE
DELETE 既存のレコードを削除します
POSTリクエストのプリンシパルデータを使用してID 123を使用してユーザーを作成します(以下を参照)。応答はIDを返します。 例:
のリクエストを取得 システム上の登録ユーザーのリストに返します
/user/
削除ユーザー123/user/
/user/123
/user/123
サブジェクトデータ。データは通常、HTMLがコミットするのと同じ方法で、またはJSONエンコードされたデータ文字列を単一の送信して、HTTP本体を介して送信されます。 REST API Response
/user/123?format=json
または/user/123?format=xml
。
次のnode.jsコードでは、Expressフレームワークを使用してRESTFUL WEBサービスを作成します。単一の/hello/
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 install
index.js
を使用して、コマンドラインからアプリケーションを起動し、ブラウザで<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
npm start
APIではカスタム名も許可されているため、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>
http://localhost:8888/hello/everyone/
// 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}`);
);
http://localhost:8888/
が表示されます。 {
"message": "Hello world!"
}
Object { message: "Hello world!" }
http://mydomain.com/hello/
幸いなことに、オリジンのリソース共有(CORS)を使用すると、このセキュリティ制限を回避できます。設定fetch()
HTTP応答ヘッダーは、ブラウザにリクエストを許可するように指示します。特定のドメイン名またはhttp://localhost:8888/
(すべてのドメイン名を表す)に設定できます(上記のクイズAPIに示すように)。 Cross-Origin Request Blocked
<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>
<code>curl "https://www.php.cn/link/bf13848f7f02f488b2e12e009a8b0df3"</code>
実際のレストコール
REST API ChallengeAccess-Control-Allow-Origin
Access-Control-Allow-Origin
RESTの成功は、主にその単純さによるものです。開発者は、好みに応じてRestful APIを実装できますが、これはさらなる課題につながる可能性があります。 RESTFUL APIの構築に関する13のベストプラクティスを詳しく調べてください。 エンドポイントの一貫性
/user/123
/user/id/123
/user/?id=123
APIは通常、互換性の問題を回避するためにバージョン制御を採用します。たとえば、
/2.0/user/123
/user/123
上に示すクイズAPIは:任意のシステムは許可なしにジョークを取得できます。これは、プライベートデータにアクセスしたり、更新を許可したり、リクエストを削除したりするAPIでは実行不可能です。
RESTFUL APIと同じドメインにあるクライアントアプリケーションは、他のHTTP要求と同様にCookieを送信および受信します。 (古いブラウザのfetch()には
REST API Security
https
RESTFUL APIは、その実装により制限されます。応答には、必要以上のデータが含まれている場合があります。または、すべてのデータにアクセスするには、さらなるリクエストが必要です。
/book/
リクエストを送信します。 /author/{id}
これはn 1問題と呼ばれます。 ?author_details=full
GraphQLはREST APIの問題を解決できますか? レストパズルLED FacebookがWebサービスクエリ言語であるGraphQLを作成しました。それをWebサービスSQLと考えてください:単一の要求は、必要なデータとそれを返す方法を定義します。
すべての言語には、安らかなAPI開発に役立つ多くのツールがあります。注目すべきオプションは次のとおりです
postman:RESTFUL APIテストアプリケーション
apiリスト
rest api
REST API(詳細な状態転送アプリケーションプログラミングインターフェイス)は、RESTアーキテクチャスタイルの原則を使用して、ソフトウェアアプリケーションがインターネットを介して通信および相互作用することを可能にする一連のルールと規則です。
REST APIの主な特徴は何ですか? REST APIは、リソースの使用、ステートレスクライアントサーバー通信、標準のHTTPメソッド(GET、POST、PUT、削除)、およびURLを使用してリソースへのアクセスと操作を含む統合インターフェイスによって特徴付けられます。 REST APIの4つのコンポーネントは何ですか?
以上がレストAPIとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。