見出し画像

DRF_REST APIとは # 165日目

Django Rest Frameworkの勉強を始めていきます。本日は、このフレームワークの土台となっている「REST API」がどういう概念なのか整理したいと思います。


APIとは

APIとはApplication Programming Interfaceの略で、あるアプリから他のサービスやアプリの機能を使いたい時に使うためのものです。正確には「こういうリクエストをしてくれたらこういう結果を返すよ」という規約、を指します。

僕が使ったことがあるものとしては、Twitterや国会会議システムのAPIがありました。で、面白いのは、このAPIというのは外部用(僕が使ったTwitter等のような)だけではなく、内部用のAPIがあります。むしろバックエンドエンジニアの仕事はこの内部用APIの開発がほとんどらしいです。例えばフロントエンド⇔バックエンドでやり取りする用のAPI等です。

Django Rest Frameworkでは、この内部用APIを開発できます。DRFで作ったAPIを通して、必要なデータをバックエンドからReactやAngularといったフロントエンドのフレームワークに渡し、クライアントのブラウザに表示する、という流れです。

APIを実装することで、複数システム・アプリケーション間でのデータ連携が容易に実現できるようになります。


RESTとは?

RESTはシンプルなWebシステムの「設計思想」です。Representational State Transfer(代表的な状態のやり取り)の略で、以下の4原則から成り立ちます。

  • 統一インターフェース

  • アドレス可能性

  • 接続性

  • ステートレス性


統一インターフェース
あらかじめ定義・共有された方法でやり取りします。何が定義・共有されているのかというと【GET・POST・PUT・DELETE等のHTTPメソッドでリクエストを出す】こと、及び【形式はJSONで返す】ことです。昔はXMLが主流だったみたいですが、今はより軽量なJSON形式が主流になっています。

出典:Wiz テックブログ


アドレス可能性
全ての情報が一意なURI(識別子)を持っていて、提供する情報をURIで表現します。URIはURLとほぼ同義です。つまりアクセスしたい情報に、URLを使うことでアクセスできる状態になっている、ということになります。

出典:Wiz テックブログ

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

(以下、独り言です)これは概念は簡単なのですが、まだあまりイメージが湧いていません。JSON形式で返ってくるデータにどうやってハイパーリンクが付いてくるのか。。今後学んでいきたいと思います。

ステートレス性
前回の情報を持っておらず、前にアクセスしていたとしても、その都度初めてのやり取りとして処理が進みます。過去情報を持たせると、セッション管理など複雑な設計が必要になり、コストもかかってしまいます。

AWSの勉強をしていた際、ネットワークACLがステートレスなセキュリティシステムだと学んでいたこともあり、この原則は理解しやすかったです。


この4原則がとても見やすくまとまっているイメージ図がありました。

出典:Wiz テックブログ


REST APIとは

上記のまとめを組み合わせた、「RESTの4原則に則ったAPI」のことです。RESTful APIという言葉もありますが、これは呼び方の違いでほぼ同じ意味合いです。また、Web分野ではWeb APIと呼ばれることもあります。

ちなみにRESTは2000年代初頭に台頭してきた設計思想で、それ以前は「SOAP」というものが主流でした。これはXML形式を想定したものだったり、仕様が複雑だったりしたため、現在のRESTに置き換わったそうです。


昨日までAWSばっかりやっていたので、また新しい分野が学べて面白いです。プログラミングの世界は本当に学ぶことが無限大で飽きないですね。

ここまでお読みいただきありがとうございました!


参考


この記事が気に入ったらサポートをしてみませんか?