REST api (1) - what is REST


このシリーズではREST APIについて説明します.
REST
representational state transferの弱者として、ロイ・フェルティンが2000年に提案したアーキテクチャである.これは,HTTP設計に基づくWebの利点を十分に利用できる通信アーキテクチャである.
ロイ・フェルティンが提案したRESTの特徴は以下の通りである.
  • uniform
  • 統合インタフェースはURIに対して一貫したインタフェースを行い、リソース操作を実行する形式である.
  • stateless
  • REST APIの動作過程は無状態である.すなわち、セッションやCookieなどの情報によってリソースの操作や検証を格納するのではなく、APIを通じてデータを転送することに専念します.(ただし、個別のDBに情報を残すことは許可されている.)
  • クライアント-サーバ構造
  • は、情報を要求するクライアントと情報を提供するAPIサーバとを分離し、相互依存性を低減する.
  • cacheable
  • RESTはHTTP設計のために提案されたアーキテクチャであるため、その特性と利点は直接使用することができる.すなわち、ETagやlast-updatedなどの属性でキャッシュを使用することができます.
  • 自己表示構造
  • 名詞形式で表されるリソース(URI)と動詞形式で表されるHTTPメソッドAPIにより,APIの表現そのものにより,この操作がどのような操作を実行するかを明確に知ることができる.
  • 階層構造
  • RESTサーバは、複数の階層に拡張でき、認証、セキュリティ、およびロード・バランシングを担当するサーバを追加できます.
  • REST api
    REST APIとは、上記のRESTアーキテクチャの特性に基づいて開発されたAPIである.REST APIは、以下の構成を有する.
  • URIは、情報を表すリソースを必要とする.
  • リソースの動作をHTTPメソッド(get,post,put,delete)で表す.
  • REST APIはHTTP方式でCRUDをサポートする.(get、post、putdeleteはCRUDの各エントリに対応します.)
    それぞれの構造原則をよく検討してみましょう.
    1.URIは情報のリソースを表す必要があります.
     GET /members/delete/1
    この言い方は間違っている.優先表現リソースのURLには動詞が含まれています.
    URIの表示に限り、以下のように修正します.
    GET /members/1
    
    2.リソースの動作をHTTPメソッド(get,post,put,delete)で表す.
    以上より,既存のdeleteを用いて動作を表すとともにgetメソッドを用いた.すなわち,CRUDからDに変更するdeleteメソッドが必要である.
    その結果は以下の通りである.
    DELETE /members/1
    URI設計
    これらのREST apiを正しく使用するためには,リソースを表現する方法にいくつか注意が必要である.早く知りなさい
  • "/"は、リソースの階層を表すために使用されます.
  • '/'はURI末尾では使用されません.
  • 'はURIには使用されません.
  • URIは小文字を推奨します.
  • ファイル拡張子はURIに表示されません.
  • 拡張子を区別する必要がある場合は、httpのacceptヘッダを使用します.
  • 参考資料
    https://meetup.toast.com/posts/92