Rest APIとは?

3693 ワード


REST

  • Representation State Transferの略
  • リソースの名前.ステータス(または情報)を表します.
  • Web上の既存技術とHTTPプロトコルを保持する->Web上の優位性を十分に利用するアーキテクチャスタイル
  • 構成REST

  • リソース(リソース):データ、メタデータ、およびHATEOASからなる
  • 挙動(Verb):
  • をHTTPで表す.
  • 表記法
  • REST特性


    1) Uniform Interface

  • コンポーネント間のインタフェースは一致する必要があります.
  • インタフェースの汎用化
  • システムアーキテクチャ全体の簡略化
  • 相互作用の可視性を向上させる
  • 実装およびサービス分離は、独立して進化することができる
  • .

    2) Stateless

  • クライアントとサーバとの間の通信は、ステータス
  • にあるべきではない.
  • すべての要求は、すべての必要な情報を含む必要がある
  • .
  • リクエストのみ
  • 可視性改善
  • タスクが失敗した場合はリカバリが容易で、信頼性が向上
  • 状態を記憶することなく
  • を拡張できる.

    3) Cacheable

  • すべてのサーバ応答は、
  • をキャッシュできるかどうかを知る必要があります.
  • の効率性、規模の拡張性、およびユーザーが得ることができるパフォーマンスの向上
  • 4)自己記述(自己表現構造)

  • REST APIメッセージのみで簡単に理解できます

    5)クライアント-サーバ構造

  • ユーザーインタフェースへの関心をデータストレージへの関心から分離する->クライアントの移植性とサーバの拡張性を向上させる
  • 6)階層化システム

  • 多層構成
  • は、セキュリティ、ロードバランシング、暗号化層を追加し、構造の柔軟性を提供します.
  • PROXYは、ネットワークベースの中間媒体(ゲートウェイなど)
  • をサポートする.

    REST API設計ガイドライン


    1)URIが情報を表すリソース

  • resource動詞ではなく名詞を使用し、大文字ではなく小文字
  • を使用します.
  • リソースのドキュメント名は単数名詞、
  • です.
  • リソースセット名複数の名前
  • を使用
  • リソースのストア名には、
  • という複数の名前が含まれています.
  • 例:GET/member/1
  • 2)リソースの挙動をHTTPメソッド(GET,POST,PUT,DELETE)と表す.


    3)URIにHTTPメソッドを含めることができない

  • 例)GET/books/delete/1->DELETE/books/1
  • 4)URIは行為を含むことができない動詞表現

  • 、すなわちCRUD機能を表すURI用でない
  • 例)GET/books/show/1->GET/books/1
    例)GET/books/insert/2->POST/books/2
  • 5)パス部分の可変部分を一意の値で置き換える

  • 、すなわちidは特定のリソースの一意の値
  • を表す.
  • 例)図書を作成するURI:POST/学生
    例)id=10の図書を削除するURI:DELETE/学生/10
  • 6)スラッシュ区切り記号(/)階層関係を表す

  • 例)http://edwith.org/courses/java2
  • 7)URIの最後の文字にスラッシュ(/)を含めることはできません。

  • 例)http://edwith.org/courses/(X)
  • 8)URIに含まれるすべてのアルファベットは、リソースの一意の識別子として使用されなければならない。URIの違いは、リソースの違いを表し、逆も同様である。


    9)ハイフン(-)はURIの毒性増加に使用可能


    10)下線の無効化()


    11)URIパスに小文字を含む


    RFC 3986(URI構文フォーマット)は、URIモードとホストのほかに、大文字と小文字を区別することを規定しているため、
  • URIパスでは大文字の文字を使用しないでください.
  • 12)ファイル拡張子はURIに含まれない、Accept Headerを使用する

  • 例)http://edwith.org/files/java.jpg(X)
    例)GET/files/jdk 18.exe HTTP/1.1 Host: edwith.org Accept: image/jpg (O)
  • 13)リソース間に関連付けがある場合は、/リソース名/リソースID/その他の関連付けられたリソース名として表示されます。

  • 例)GET:/books/{bookid}/ビューア(通常は「has」の関係を持つことを示す)
  • 14)リソースの集合とドキュメントを表す

  • コレクション:オブジェクトのコレクション
  • 度管理:オブジェクト
  • コレクションとドキュメントは、リソースとしてもURIとしても
  • としても表示できます.
  • 例)http://edwith.org/courses/1
    coursesは集合であり,複数で表現する.courses/1はcoursesにおけるidが1のツール
  • を表す

    HATEOAS

  • ハイパーメディアAs The Engine Ofアプリケーション状態の略
  • は、データに関するURL情報
  • を提供する.
  • 「links」は、HATEOAS部
  • に対応する.
    {
        "id" : 1,
        "title" : "hello spring",
        "author" : "carami"
        "price" : 5000,
        "_links":{
            "self":{
            "href":"http://localhost:8080/books/1"
            },
            "query-books":{
            "href":"http://localhost/books"
            },
            "write-books":{
            "href":"http://localhost/books"
            }
        }
    }