2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

REST APIとは?

Last updated at Posted at 2022-09-17

そもそもAPIって何?

Application Programming Interfaceの略
他社が提供するサービス内の情報、機能を扱えるようにする仕組みのことです

APIの種類

APIには

  • HTTP/HTTPSベースで実現するWebAPI
  • WindowsAPI

など色々ありますが、一般的にはAPIと言われたらWebAPIのことだと思っていただけたら大丈夫です

API.jpg

代表的なAPI(WebAPI)

  • GitHub REST API

  • Twitter API

など

APIのメリットは?

ユーザ(APIを使用する個人、企業)側

  • 開発コストの削減、効率化
    • 機能を1から作成せずにAPIを使うことで開発コストを削減できる
  • セキュリティ面の向上
    • 機能やデータはAPIを開発者側が保持するため使用する側は意識しなくても良い
    • 特にユーザの口座情報などリスクの高い個人情報を扱う時に便利
  • クォリティの向上
    • 特定の分野に特化した企業(Google、Amazonなど)が提供しているAPIはユーザ側が1から開発するより安価でハイクォリティ

あえてデメリットを挙げるとしたら

  • APIの提供サービスに依存してしまう
    • 料金体系の変更やAPIの仕様変更に対応する必要がある
    • 開発者側のサーバに障害が起きると利用できなくなる

開発者(APIを提供、開発する個人、企業)側

  • サービス連携が容易になり、ビジネスチャンスを拡大させることができる
    • APIを公開していると普段関わる可能性が低い企業とも繋がることができる
  • 技術を隠蔽(ブラックボックス化)できる
    • APIのソースコードは非公開のため、技術流出リスクがない

Web APIの主な設計思想について

主に

  • RPC(Representational StateTransfer)
  • SOAP(Simple Object Access Protocol)
  • REST(Remote Procedure Call)

が挙げられますが、現在主流となっているのがREST APIです
RPC、SOAPに関して気になる方は調べてみてください

REST APIとは?

RESTという設計思想に沿って作成されたAPI
REpresentational State Transferの略で

  • 統一インターフェース(Uniform Interface)
  • アドレス可能性(Addressability)
  • 接続性(Connectability)
  • ステートレス性(Stateless)

の4つの原則から成り立っています
REST APIという共通の設計思想があることでユーザ側・開発者側双方にとって利用、開発が容易になります

統一インターフェース(Uniform Interface)

操作のやり取りをする方法を統一することです
WebAPIの操作はHTTPメソッドで統一されています
主なHTTPメソッドと役割は以下のとおりです。

HTTPメソッド 役割
GET データを取得
POST データを新規作成
PUT データを更新
DELETE データを削除

また、やり取りする際のデータ形式は主にXMLかJSONになります

API-Uniform Interface (1).jpg

アドレス可能性(Addressability)

1つのURIで全ての機能を実現できるようにすることです
全ての情報が一意のURIで表現されます

API-address.jpg

接続性(Connectability)

情報のなかに、別の情報へのリンクが含まれることです
リンクを含めることで別の情報へ接続することができるようになります
API-connectability.drawio.png

ステートレス性(Stateless、状態を持たないの意味)

全てのリクエストが完全に分離していることです
つまり、それぞれのリクエスト同士が影響し合うことがないことです
通常、ステートレスな状態だとユーザの状態(ログイン情報)を持たないことになります
そこで、ユーザのログイン情報を持った状態でRestAPIを使用する、つまりステートフル(状態をもつ)にするにはCookie(ユーザの情報を保存する仕組み)とSessionID(ユーザを認証するための一意のID)を使うのが一般的です

API-stateless.drawio.png

最後に

RESTAPIという単語はなんとなく知ってたものの、調べることで理解が深まりました

参考

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?