REST API


📌  여러 글을 참고하여 REST API 공부한것을 간략하게 정리해봤습니다.

REST API (Representational State Transfer)


HTTPメソッド+URI(Resource)を使用してエンドポイントを作成するRESTアーキテクチャに従います.
  • RESTとは、Web上に存在する全てのリソースに固有のURIを付与することにより、URIに対する挙動をHTTPメソッドと定義する方式である.
  • URIに要求を送信すると、各URIは、HTTPメソッドに送信されたフォーマットに対応するリソースを応答として送信する.
  • これは、
  • HTTP URI(Uniform Resource Identifier)によってリソースを指定し、HTTPメソッドによってリソースにCRUDアクションを適用することを意味する.
  • CRUD Operation
  • POST : Creacte
  • GET : Read
  • PUT : Update
  • DELETE : Delete
  • HEAD:Header情報クエリー
  • RESTfulアーキテクチャの最も重要な2つの側面

  • URIは資源を名詞で表す必要がある.
  • リソースの動作はHTTPメソッドで表すべきである.
  • Endpoint

  • HTTPメソッド+URI、1つのAPI固有のものをEndpointと呼ぶ.
  • HTTPメソッドごとに同一URIでも異なる処理を行うが,これを区別する項目はEndpointである.
    =>各APIは通常、1つのロールのみを演じます.
  • 構成REST


    リソース(Resource):統合リソース識別子(URI)

  • すべてのリソースには、「https://llama.com/llamas/:first_llama」などの固有のIDがあり、誰もが識別しやすい名前のURIとして使用する必要があります.
  • Verb(動作):4種類のHTTPメソッド

  • GET - Read
  • POST - Create
  • PUT - Update
  • DELETE - Delete
  • Resource Representation

  • サーバが送信する応答は、JSON、XML、TEXT、RSSなど、様々な形式で表すことができる.
  • 最も一般的なのは
  • JSONまたはXMLによるデータ交換である.
  • REST特性

  • サーバ-クライアント構造
    サーバを
  • の2つの領域に分割することで、サーバが処理する必要がある部分を減らすことができ、拡張が容易になります.
  • クライアントは、ユーザ認証やContextなどを管理することができ、相互依存性を低減することができる.
  • リソースの所在者はサーバであり、要求者はクライアントである.
  • ステータスなし
  • HTTPプロトコルは無状態プロトコルであるため、RESTも無状態性を有する.
  • クライアントのContextはサーバに保存されません.
  • は、各要求を個別の処理と見なす.
  • Cacheable(キャッシュ可能)
  • Web標準HTTPを採用しているため、HTTPが持つキャッシュ機能などWebで使用する既存のインフラストラクチャを利用することができる.
  • HTTPプロトコル規格で使用されている最新タグまたはE-Tagを使用すればキャッシュを実現できる.
  • Last-Modified Tag
  • エンティティは、最後の変更時間に関する情報を提供します.
  • E-Tag
  • メッセージのエンティティにエンティティタグを提供し、これらのタグを使用してリソースを識別します.
  • キャッシュされた中間エージェントサーバに応答することによって、RESTサーバはトランザクションを発生させず、応答時間、パフォーマンス、およびサーバのリソース使用率を向上させる.
  • トランザクションは、分割できないビジネス・プロセス・ユニットであり、エラーが発生すると、すべての作業が元に戻ります.
  • Webキャッシュは、通常のドキュメントのコピーを自動的に保存するためのHTTPデバイスであり、WebリクエストがProxyサーバに到達したときにキャッシュされたローカルコピーが存在する場合、サーバではなくキャッシュからドキュメントを提供する.
  • キャッシュ・エージェント・サーバがある場合、最初のクライアントを除いて、他のクライアントはエージェント・サーバから情報を受信できます.
  • 階層化システム
  • クライアントはRESTサーバのみを呼び出し、実際にどのサーバと直接通信するか分からない.
  • REST Serverは、セキュリティ、ロード・バランシング、暗号化、ユーザー認証などの階層を追加することで、多層構成を実現できます.
  • Proxy、Gatewayなどのネットワークベースの中間媒体を使用することができる.
  • Uniform Interface
  • HTTPメソッド+URIに統一され,一定の学的制約を持つインタフェースである.
  • Code On Demand (Optional)
  • REST Serverからスクリプトを受信し、クライアントで実行します.
  • Self Description(自己表現構造)
  • RESTメッセージを表示するだけで、どのリソースであるかがわかります.
  • Resource

  • 各コーナーデータはリソースと呼ばれ、リソースには固有のIDがある.
    次に、
  • の例を作成します.
  • GET+stores>>ストレージリストを入手できます.
  • GET+stores/:id>>>入力idのstoreのみ受け付けます.
  • PUT+ストレージ/:id>>に入力されたidのリソースを変更できます.

  • Reference


    https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
    https://brainbackdoor.tistory.com/53