REST APIとは何ですか?制約、リソース、設計
Scrapeless Scraping APIは、アプリケーションワークフローのために構造化された公開ウェブデータを返すタスク特有のHTTPインターフェースを提供します。
要点
- RESTはアーキテクチャスタイルです。 REST APIは、1つのエンドポイントテンプレートやデータ形式を規定するのではなく、ネットワークされた相互作用に制約を適用します。
- リソースは表現を通じて特定され、交換されます。 クライアントはサーバーの内部オブジェクトを直接受け取ることなく、リソース状態に基づいて行動します。
- HTTPはRESTに適していますが、それを保証するものではありません。 URL、JSON、および一般的なメソッドを使用すると、RPCスタイルのインターフェースを生成することもできます。
- ステートレスリクエストは処理に必要なコンテキストを運びます。 サーバー側のアプリケーションデータは依然として存在する; 制約は会話のクライアントセッション状態に関するものです。
- キャッシュ可能性と均一なインターフェースはスケールをサポートします。 それらは結合を減少させ、仲介者が相互作用を理解できるようにします。
REST API定義
REST APIは、表現状態転送アーキテクチャスタイルに従って設計されたアプリケーションプログラミングインターフェースです。RESTは、分散ハイパーメディアシステムのコンポーネントに対する制約を説明します。JSON、1つのURLパターン、または特定のプログラミング言語を要求するものではありません。Web APIは、HTTPを通じてRESTのアイデアを一般的に適用します。なぜなら、HTTPはすでに識別子、メソッド、表現、メタデータ、キャッシュ、および仲介者を提供しているからです。
中心的な抽象概念はリソースです:時間をかけて特定できる概念的なもの。サーバーは、その内部データベースオブジェクトを転送するのではなく、JSONまたはXMLドキュメントなどのリソース状態の表現を送信します。クライアントはその表現を解釈し、インターフェースのセマンティクスに従います。 元のRESTアーキテクチャの説明 は、制約が可視性、スケーラビリティ、および独立した進化を支える方法を説明します。
実践におけるREST制約
REST APIとは何かを理解するためのメカニズムは、1つ以上のソフトウェアまたはネットワーク境界を越えます。各ステージの名前を付けることで、パフォーマンス、正確性、およびセキュリティレビューを具体化します。
クライアントサーバーとステートレス相互作用
クライアントの関心はサーバーデータと動作から分離されています。各リクエストには、それを理解するために必要な情報が含まれており、以前のリクエストからの隠れた会話状態に依存することはありません。認証状態や保存されたリソースは存在する可能性があります; 制約はメモリのないサーバーを要求しません。
キャッシュと層状システム
レスポンスは再利用可能かどうかを定義します。ゲートウェイ、プロキシ、その他の仲介者は、クライアントが見るインターフェースを変えることなく、クライアントと起源の間に座ることができます。正しいメタデータは、キャッシュが繰り返し作業を削減し、表現のセマンティクスを維持できるようにします。
均一なインターフェースとオプションのコード
コンポーネントは、一貫した概念のセットを通じて相互作用します:特定されたリソース、表現、自己記述メッセージ、およびハイパーメディアコントロール。オプションの制約であるコードの要求により、システムがそれを使用することを選択したときに、実行可能なコードがクライアントの動作を拡張できます。
REST概念とそのHTTP表現
チームは、異なる動作を仮定しながらラベルに合意することがよくあります。これらの行は、REST APIとは何ですかを明示的な契約および運用上の質問に変えます。
| 概念 | 意味 | 実用信号 |
|---|---|---|
| リソース識別子 | 概念的リソースの名前。 | コレクションやレコードアドレスのようなHTTP URI。 |
| 表現 | リソース状態の現在のビューを運びます。 | JSON、XML、HTML、ドキュメント、または他の交渉されたメディアタイプ。 |
| メソッドセマンティクス | 相互作用の意図を表現します。 | 安全な読み取り、作成、置換、変更、または削除(文書化されたもの)。 |
| ステータスおよびメタデータ | 結果と表現を説明します。 | ステータスコード、コンテンツタイプ、バリデーター、キャッシュコントロール、およびリンク。 |
| ハイパーメディアコントロール | 利用可能な状態遷移を広告します。 | メディアタイプと関係によって定義された意味のリンクまたはフォーム。 |
REST APIが適している場所
REST APIの採用または最適化を行う最も強い理由は、ワークフローとの測定可能な適合性です。これらのシナリオは、その適合性を説明し、用語を普遍的なデフォルトとして扱うことなく説明しています。
リソース指向サービス
コレクションとレコードは、安定した識別子と標準的なインタラクションセマンティクスに自然にマッピングされます。
公開プラットフォームAPI
HTTPツール、キャッシュ、ゲートウェイ、そして広範な言語サポートにより、インターフェースは組織全体で親しみやすいものになります。
独立したクライアント
安定した統一インターフェースにより、モバイル、ウェブ、コマンドライン、およびパートナークライアントが別々のリリーススケジュールで進化することができます。
キャッシュ可能な読み取り
正しいバリデーターと新鮮なメタデータを持つ表現は、オリジンの作業とネットワーク転送を削減できます。
REST APIを設計または評価する方法
ドメインリソースとその識別子から始め、次に表現と遷移を定義します。すべてのビジネスアクションを任意の動詞形のURLに変換することは避けてください。一部の操作は基本的なリソースの変更にうまくマッピングされません; それでもリソース、ジョブ、またはコマンドとしてモデル化できますが、明確さは見た目の純粋さよりも重要です。
HTTPセマンティクスを一貫して使用します。 現在のHTTPセマンティクス標準 メソッドプロパティ、ステータスコード、フィールド、および表現の概念を定義します。安全なメソッドは、安全でないビジネス変更を実行することが文書化されるべきではありません。キャッシュメタデータ、条件付きリクエスト、およびコンテンツネゴシエーションは、コピーされたヘッダーではなく、実際の動作を反映する必要があります。
設計ミスとページネーションを契約の一級の部分として扱います。クライアントは、安定したエラー識別子、読みやすい詳細、フィールドレベルの検証コンテキスト、およびインシデントを相関させる方法を必要とします。大規模なコレクションには、データが変更されても正しいままである決定的な順序付けと継続ルールが必要です。承認は、識別子の所有から単に推測するのではなく、それぞれのリソースと操作に対して評価されるべきです。
一般的なREST API設計エラー
- HTTP経由のJSONインターフェースをRESTと呼ぶ。 輸送とメディアタイプは、アーキテクチャの制約が存在することを証明するものではありません。
- データが保存されていないこととステートレスを混同する。 RESTサーバーはリソースを保存し、後のリクエストを解釈するために必要な隠れた会話の文脈を避けます。
- すべての結果に対して1つのステータスを返します。 クライアントは、検証、認証、欠如、競合、およびサーバーの失敗が同一に見えるとき、有用な意味論を失います。
- モデルなしでキャッシュヘッダーを使用する。 不正確な鮮度や検証者は、古いデータを提供したり、安全な再利用を妨げる可能性があります。
- バージョン変更中の識別子の破壊。 安定したリソースのアイデンティティと明示的な互換性ポリシーは、装飾的なURLの慣習よりも重要です。
データ収集システムにおけるREST API
RESTスタイルのデータソースは、しばしばページングされたコレクションやアイテムリソースを公開します。コレクターは、文書化された継続リンクやカーソルに従い、レスポンスのメタデータを記録し、表現を検証し、ソース識別子を保持する必要があります。APIが継続制御を提供する場合、文書化されていないページ算術を発明してはいけません。
条件付きリクエストは、サービスがバリデーターを公開する際に繰り返し収集をより効率的にすることができます。クライアントは、表現が変更されたかどうかを尋ね、必要な場合にのみボディを処理します。これは、転送とオリジン作業を削減できますが、ソース契約がセマンティクスを文書化し、コレクターが対応するリソースとともにバリデーターを保存する場合に限ります。
必要な公開データがレンダリングされたページを介してのみ利用可能な場合、ブラウザまたはスクレイピングインターフェースが取得レイヤーを提供することがあります。そのステップは、下流の消費者に公開されている標準化された内部RESTサービスとは別に保持してください。この分離により、ソース特有のレンダリングとパースが変更されても、すべての消費者が変更を強いられることはありません。
REST APIレビューチェックリストとは何か
これらのチェックを使用して、REST APIの定義を、開発者、オペレーター、またはレビュアーが再現できる実装証拠に変換します。
- ルール: 1. 翻訳されたテキストのみを出力 — 説明や余分なコードフェンスは不要です。 2. Markdown/HTMLの構造(見出し、リスト、リンク、テーブル)を正確に保持します。 3. @@CODEBLOCK_0@@ や @@INLINECODE_0@@ のようなプレースホルダーは正確に保持し、決して翻訳せず、順序を変えず、結合せず、再フォーマットしません。 4. ``` コードフェンスを追加したり削除したりせず、通常のテキストをコードブロックにラップしません。 REST APIとは何かを理解するために、呼び出し元、プロバイダー、パス、および完全な結果を示す正確なイベントを特定します。
- 中央の主張を確認する。 この声明を実装とそのドキュメントで確認してください:RESTはアーキテクチャスタイルです。REST APIは、1つのエンドポイントテンプレートやデータフォーマットを規定するのではなく、ネットワーク化された相互作用に制約を適用します。
- メカニクスを追跡する。 クライアント-サーバーおよびステートレスなインタラクション、キャッシュとレイヤードシステム、一様なインターフェースとオプションのコードオンデマンドを観察し、各ステージを所有するコンポーネントを記録します。
- 最も近い区別を確認してください。 リソース識別子がこのシステムで「概念的リソースの名前を付ける」と意味する理由を文書化します。
- テスト用の代表的な使用ケース。 リアルなデータ、場所、ボリューム、権限の境界を持つリソース指向サービスを使用してください。
- 既知の間違いから守る。 「HTTP経由の任意のJSONインターフェースをRESTと呼ぶ。」をレビューし、それをキャッチする受け入れチェックを追加してください。
- ワークロードを制限する。 What Is a REST APIのトピックに適した制限を設定してください。ペイロード、同時実行、実行時間、適用される場合の保存された出力を含みます。
- 決定を記録してください。 What Is a REST APIがこの境界に適合する理由と、後で異なるアプローチを正当化する証拠を挙げてください。
結論
What Is a REST APIは、隣接する動作の緩いラベルとして機能するのではなく、設計のテスト可能な部分を記述する必要があります。この中央の決定を保持すべきです:RESTはアーキテクチャスタイルです。REST APIは、1つのエンドポイントテンプレートまたはデータフォーマットを処方するのではなく、ネットワークされた相互作用に制約を適用します。また、任意のjson-over-httpインターフェースをrestと呼ぶことに対しても警戒すべきであり、What Is a REST APIのアクセスをインターフェースまたはネットワークに関する文書化されたポリシー内に保つ必要があります。
あなたのウェブデータワークフローを構築する準備はできていますか?
測定されたWhat Is a REST APIの取得または統合ステップを、上記に記載された検証およびストレージの実践に接続してください。
今日サインアップして、 $5の無料クレジットを手に入れましょう。 — クレジットカードは不要です。.
$5のクレジットを請求する →FAQ
RESTの略は何ですか?
RESTは表現状態転送を意味します。この名前は、制約のあるネットワーク指向のアーキテクチャスタイルを介してリソース状態の表現を転送することを指しています。
REST APIは常にHTTPおよびJSONですか?
いえ。RESTはアーキテクチャスタイルであり、HTTPやJSONを強制しません。HTTPはRESTの概念に適合し、JSONは一般的な表現であるため、この組み合わせは広く普及しています。
APIをRESTfulにする要素は何ですか?
RESTful APIはRESTの制約に従います:クライアント-サーバー分離、ステートレスな相互作用、キャッシュ可能性、一様なインターフェース、層状システム、オプションとしてコードのオンデマンド。実際のインターフェースは、これらの制約を異なる程度で適用する場合があります。
RESTとRESTfulの違いは何ですか?
RESTはアーキテクチャスタイルの名前ですが、RESTfulはそのスタイルに従って設計されたシステムを説明します。通常のAPIの議論では、REST APIとRESTful APIはしばしば相互に使われます。