【React学習】(番外編)〜API〜

PHP

 APIという言葉をよく耳にしていたんですが、何のことかさっぱり分からないままここまでやってきました。

 トランポリン採点集計システムはPHPでページを表示しているんですが、「フォームの値を処理してデータベースに登録するにはどうしたらいいんだ?」と困ったことがあり、悩んだ末に「ページの表示には関係ない処理だけのPHPファイル」を作ることにしました。これで、「表示用のPHP」と「処理用のPHP」の2種類ができてしまって、ファイル構成がぐちゃぐちゃになってしまいました。

 実はこの「処理だけを行うPHPファイル」こそが、APIだったのです。

APIとは

 自分なりの理解で言うと、APIは、ユーザーの入力値などの「リクエスト」を見えないところで処理して「レスポンス」を返してくれるものだと思っています。データの取得や登録、更新といった処理はAPIが担う役割の代表例です。

 そして、APIがリクエストを受け付ける場所(ユーザーがリクエストを送信する宛先)を「エンドポイント」といいます。私のプログラムでは、処理ごとにAPIが存在し、それぞれにエンドポイントがあるので、ごちゃごちゃしてしまったわけです。

 例えばデータの取得について考えてみると、どのデータをとってくるかは違っても、「データの取得方法(データベースの取得、SQLの実行など)」は共通なはずです。共通なものは一つにまとめて、リクエストの際に欲しいものを指定してあげればいいわけです。

 言われてみれば簡単なことなんですが、一生懸命作っているうちは、こんなことも分からなかったんです。

REST API

 Udemyの講座でREST APIという言葉が出てきました。なんとなくしか分かっていませんが、「HTTPリクエストの種類とリソースを表すURIでリクエストを処理するAPI」と理解しています。

 HTTPリクエストにはGETやPOST、PUT、PATCH、DELETEなどがあり、これらによって処理を分けます(GETならデータの取得、POSTなら登録といった感じ)。そして、リソースを表すURIで処理をするデータを決定します。例えばuser/1ならIDが1のユーザー、user/2/message/3ならIDが2のユーザーが送ったID3のメッセージといった具合です。これにHTTPリクエストをくっつければ、ユーザー登録やメッセージの更新などの処理ができるということです。

 REST APIは、何か具体的なシステムのことを指しているのではなく、上に書いたような処理を行うものの総称のようです。「このように作ったら便利だよ」というルールみたいなものだと解釈しています。

 じゃあ作れるかといったら、それはまた別の話で、やってみると難しかったです。「多分こうかな?」と思いながら作ってみましたが、なかなか上手くはできませんでした。(リソースをURIで指定する=PHPファイルのディレクトリ構造だという大きな勘違いもありました)

 それでも意識してAPIを作ったことで、共通の処理を何度も書くことはありませんでしたし、どこに何が書いてあるかが分かりやすくなったので、修正も以前よりは楽だった気がします。

コメント