RestAPIについて - slcsol4/wyn-wiki GitHub Wiki

当プロダクトで採用するAPI

  • REST APIを採用する

REST APIとは

シンプルなWebシステムの設計思想のこと
RESTには4原則があり、すべて満たすAPIのことを「RESTfullAPI」という

RESTFullの4原則

  1. 統一インターフェース
  2. アドレス可能性
  3. 接続性
  4. ステートレス性

統一インターフェース

「あらかじめ定義・共有された方法でやり取りされる」ということ

  • 定義
    • WebならHTTPメソッドの「GET・POST・PUT・DELETE」でやりとりする
    • HTTPメソッドには他にも「OPTION・TRACE・PATCH」などがあるが、とりあえずは上記4つが重要
  • 方法
    • JSONやXMLなど共有する方法がきまっていること
    • 今はJSONが多い

アドレス可能性

全ての情報が一意なURI(識別子)を持っていて、提供する情報をURIで表現できること
※URI:Uniformed Resource Identifierの略で、Webの場合は通常URLで与えられる

例)「https://prometheus.com/users/list/」 -> ユーザーのリストを返す
https://prometheus.com/companies/{companyid}/info」 -> 企業の中の{coomanyid}の情報を返す

接続性

接続性は、やりとりされる情報にはハイパーリンクを含めることができる
1つのリンクから別の情報にリンク(接続)することができて、RESTfulなシステム同士なら円滑に情報連携を行うことができるということ

ステートレス性

ステート=「状態」
つまり状態を「持たない」→依存しないということ
WebでいうところのセッションやCookieに依存せず、特定のURIをたたけばいつでも同じ情報を取得できる状態にあるということ

業務システムでRestFullを実現できるか

RestFullは難しい
4原則の中の「ステートレス性」が難しい
業務システムの場合、たいてい操作者を特定するために「ログイン機能」があり、認証情報をセッションやCookieなどに格納して、認証・認可を実現する
よって、業務Webシステムの場合、RestFullの実現は難しいが、そこを目指すという意味で「RestApi」にしたい

※SpringBootsecurityであれば実現できるかも