Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
190
Help us understand the problem. What is going on with this article?
@nakaji0210

RESTとかREST APIとか【ざっくりまとめ】

Web技術の勉強会の機会を頂き、私自身RESTというものについてあまり知らなかったので、
基本的な概念を簡単にまとめてみたいと思います。(初学者向けの内容です)

まずRESTを理解する

「REST」とはシンプルなWebシステムの設計思想のこと。
 REpresentational State Transferの略。
(リプレゼンテーショナル ステイト トランスファー)

  • Representational:具象化された
  • State:状態
  • Transfer:転送

つまり「具体的に状態を定義した情報のやり取り」のような意味合い。(ざっくりと)

そして「RESTの原則」というものがあり、これを満たすものを「RESTfulなシステム」という。

RESTの4原則

RESTの原則は次の4つで、
HTTPを設計した中心人物(Roy Fielding氏)が2000年に提唱したもの。
 ①統一インターフェース
 ②アドレス可能性
 ③接続性
 ④ステートレス性

①統一インターフェース

あらかじめ定義・共有された方法でやり取りされること。
Webの場合「GET、POST、PUT、DELETEのHTTPメソッドでやりとりするよ~」とか
データのやり取りは軽量なJSON形式が多い。(XML等もある)
image.png

②アドレス可能性

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

③接続性

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

image.png

④ステートレス性

ステートとは「状態」のこと。レスなので「状態がない」ということ。
つまりRESTでは「やりとりが1回ごとに完結する」という意味。
前のやり取りの結果に影響を受けないのでシンプルな設計にできる。
→セッション管理が不要とか

図にするとこんな感じ..

image.png
 ①HTTP通信でやりとりする →統一インターフェース
 ②このURLの情報ください →アドレス可能性
 ③リンクを含んだページをあげるよ →接続性
 ④さっきの情報をくださいと言われてもわからない →ステートレス性

じゃあRest APIって?

まずAPIとはApplication Programing Interfaceのこと。
 →要するにプログラム情報をやり取りする蛇口のようなもの。
image.png

そしてREST APIとは先ほどのRESTの4原則に則ったAPIのこと。

補足メモ:
RESTful APIREST APIは呼び方の違いで意味はほぼ同じ。
またWeb分野では単にWeb APIと呼ぶこともある。

APIを使うイメージ

・天気予報サイトの外部APIを使う例
image.png
・中央のポータルサイトがYahoo!のトップページ、ユーザーは住んでいる地域を登録している。
・この地域情報を天気予報のAPIサーバーに渡して、その地域の天気の情報を検索して返してくれる。
・スマホアプリなども登録情報から同様に活用される。
というイメージ。

ちなみに他には..?

REST以外のものとしては、
2000年代初頭まではXML-RPCやSOAPが使われていた。
しかしXMLに限定していたり仕様が複雑だったりで、広く普及するには至らなかった。
 →現在ではSOAPに代わりRESTが中心になっている

まとめ

・RESTはRESTの4原則に沿ったシンプルな設計思想のこと。
  ①統一インターフェース
  ②アドレス可能性
  ③接続性
  ④ステートレス性
 の4つ。
・これらに沿ったシステムを「RESTfulなシステム」という。
REST APIRESTful APIは呼び方の違い。
RESTはRPCやSOAPと違って「標準化」ではないが、現代の主流の設計思想である。

参考文献

「イラスト図解式 この一冊で全部わかるWeb技術の基本」小林 恭平
https://www.amazon.co.jp/dp/4797388811/ref=cm_sw_r_tw_dp_A2PdGb31RS2Z1


以上、簡単ではありますが、最後までお読み頂きありがとうございました(^_^)

190
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
nakaji0210
東京でバックエンドエンジニアをやっております。LaravelやPHPを中心に日々勉強中。
wiz_inc
Wizは、最新のIoTやICTサービスをお客様に届ける「ITの総合商社」です

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
190
Help us understand the problem. What is going on with this article?