はじめに
初心者向けです。
RESTfulAPIについてざっくりした大枠の理解をする為の記事です。
プログラムの詳細な書き方などは記載しません 各プログラムにおける詳細な書き方はググりましょう。
初心者が備忘録として書いています。
間違っていたらご指摘いただけるとありがたいです。
RESTful APIとは
結論から先に書くとJavaやPython、Htmlなどの色々な異なる言語間で情報のやりとりをできるようにするための仕組みです。
誤解を恐れずあえて一言で書くとRESTful APIとは どちらも食べる必要のある翻訳こんにゃくです
どういう事でしょうか?
以下AWSからの引用です(https://aws.amazon.com/jp/what-is/restful-api/#:~:text=RESTful%20API%20%E3%81%AF%E3%80%812%20%E3%81%A4%E3%81%AE,%E9%80%9A%E4%BF%A1%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)
RESTful API は、2 つのコンピュータシステムがインターネットを介して安全に情報を交換するために使用するインターフェイスです。
なるほどわかりそうでわからん😊
ドラえもんを使ってもう少し具体化して考えてみましょう。
今回RESTfulAPIの説明の為にドラえもんにはタイムマシンで原始時代に行ってもらいます。
登場人物はとりあえず二人です。
一人はJavaを話すドラえもんです。
もう一人はPythonを話す原始人です。
JavaではPythonのコードが送られて来てもエラーになるしPythonはJavaのコードが送られてきてもエラーになります。
ドラえもんも原始人も
『ちょっと何言ってるのか分かんないっす』となりますね。
そこで登場するのが翻訳こんにゃく(RESTful API)です。
原作だと翻訳こんにゃくを食べるとお互いの話す言葉が分かるようになりますね。細かい話ですが、ここで言う翻訳こんにゃくはお互いが持っていないとダメって点が違います
RESTful APIでも同じです。
ドラえもんが話すJavaや原始人が話すPythonから送られてくる情報をRESTを使って翻訳して(例えば、JSON形式に変換して)会話をできるようにします。
RESTについて
先程の説明の終わりにRESTを使って翻訳するといいました。
ではRESTとは何でしょうか?
RESTは以下の4つの原則を有する設計思想の事です。
- 統一インターフェース
- アドレス可能性
- 接続性
- ステートレス性
統一インターフェース
統一インターフェースとは簡単に言うと通信のやりとりにHTTP通信を使ってJSON形式でデータのやり取りをしましょうねって事です。
先程のドラえもんと原始人の会話はJSON形式に一旦変換されて行われる事になります。
アドレス可能性
ここは悔しいのですが、ドラえもんと原始人の例からは離れ、PC、サーバー間でのやり取りだと考えます。世界中にあるPCとサーバーのどこにアクセスしたらいいかわからないですよね?
そのためにアドレス(URI)をデータにくっつける事でデータを送ったりもらったりできるようにする必要があるのです。
接続性
接続性とは 情報の内部に別の情報のリンクを含める事ができる事を言う。
先程のドラえもんの例だと道を聞いたあとさっきのあの道の話やねんけどなって続けれるようにできるって事ですね😊
ステートレス性
ステートレスとは一回のやり取り完結で行われる。
先程のドラえもんと原始人のやり取りだと道の話を終えた後に別の話をするとき,
一回の会話(セッション)で終わりなので、ドラえもんは道をまた聞かないし、原始人は道順をまた返さないって事ですね😊(もう一回教えてって言えば別ですが)
つまりRESTって情報伝達するときの決まりごとはこうですよねってまとめてるだけの事だったんだ!!
おまけ
APIとは RESTful APIとREST APIって違う?
APIとは
これは名前の通りなのですがApplication Programming Interface つまりアプリ同士をつなぐものって意味ですね
アプリ連携って言ったほうがわかりやすいですね。
RESTful APIとかのWEBを使ったAPI とか PC内部のソフトウェア間での連携も含まれる言い方です。
RESTful APIと REST APIって違う?
違いはないです。
一言でまとめ
- RESTful API は アプリ間の情報伝達を簡単にしてくれるもの
- RESTは 情報伝達の決まり事を決めるもの