インフラ屋には馴染みが薄いかもしれませんが、界隈でよく耳にするバズワード(もう古いですが)です。 きになるので調べてみました。
正直調べる過程でわからないことが多く、かつ技術的に広がりが大きすぎるため、調べきることができませんでした。
情報としては不完全ですが、とりあえず技術的な記事をポストすることを大事にしていきたいと思いますので、今回はこのままあげさせていただきます。
APIとは
APIはApplication Programming Interfaceの略で、ソフトウェアが互いに通信するときのインターフェースの仕様です。
広い意味で使われるため、一概にAPIと言っても文脈で様々な意味を持ちます。 OS上で使うAPIもあれば、Javaで使うものもありますし、WebAPIと呼ばれるインターネット上で公開されているAPIも存在します。
今回とりあげるAPIは、Webで使用されるWeb APIを指します。
WebAPIには色々な種類がある
WebAPIをさらに細かく見ていくと下記のようなワードが出てきます。
- RPC(Remote Procedure Call)
- SOAP(Simple Object Access Protocol)
- REST(REpresentational State Transfer)
まず大きく分けて、RPCと呼ばれるものとRESTと呼ばれるものがありますのでここからはじめます。
RPCとは
RPCとは、広い意味ではあるプログラムから別のネットワーク常に存在する関数の実行を可能にする技術です。remote=遠隔の意味の通りですね。 RPCの中でもとくに有名なのがSOAPでXMLを使用してプログラム間の通信を行います。
現在(2020/04)はgRPCの方が有名になってきました。こちらの記事で解説しています。
SOAPとは
SOAPはXMLを使ったプロトコルです。HTTPリクエストとレスポンスにXMLを使用しデータのやり取りを行います。
XMLとは
XMLはコンピューターが読み取りやすいように作成されたデータフォーマットの一種でタグで括ることによってデータを示します。
HTTP通信においては、HTTPリクエストの
ヘッダ内にXMLを格納し対向に通信を送ります、 受け取る際にはHTTPレスポンスのヘッダ内に格納されたXMLを取り出します。REST
REpresentational State Transfer
の頭文字をとってREST
です。直訳すると「現在の状態の転送」でしょうか。RESTは通信プロトコルではなくWebAPIの仕様を決める上での考え方です。(プロトコルではない)
RESTはあるコンテンツ(リソース)に対して常に一意のURLを持つことが前提です。例えばhttps://xxxx/aticle/20161014_01
といったように本日の日付の01番の記事を示すURLがこれに当たります。
一方であるサイトにログインすると、どのユーザーも一律https://xxxx/user_area
に飛ばされる場合のuser_area
は常に一意のURLとは言いません。これはセッション情報やクッキー情報によって都度違うページが生成されるため一意ではないからです。
※taroユーザーとjiroユーザーでは同一URLでもコンテンツが異なる
あるURLに対してRESTはHTTPリクエストのメソッドを利用したものです。 リソースタイプを指定し、POST/GET/PUT/DELETEなどのHTTPプロトコルのメソッドを組み合わせて意味を示します。
結局SOAPとRESTは何が違うのか?
比較軸 | SOAP | REST |
---|---|---|
ジャンル | プロトコル | 概念・考え方 |
扱うデータフォーマット | XML | json |
考え方 | ステートフル | ステートレス |
参考
ご指摘等多々あるかと思います。コメントでいただければ大変助かります。