REST ful API(REST API)とは

Webシステムを外部から利用するための規約(API)のひとつで、RESTという設計原則に基づいて策定されたもの。
URLですべてのリソースを一意に識別し、セッション管理や状態管理を行わないステートレスなAPIであり、同じURLの呼び出しは常に同じ結果が返されることが期待される。
リソースの操作はHTTPメソッドによって指定(取得ならGET、書き込みならPOST)され、JSONなどの形式で返される。
またHTTPステータスコードを伴って結果が通知される。

例:GETリクエストにて https://example.com/post/user-info/0001/ へアクセスすることはREST APIではなく、POSTリクエストで https://example.com/user-info/0001/ へアクセスし user-info を更新することがREST API

REST API まとめ

  • URL(URI)でリソースを管理
  • メソッドはHTTPメソッドを利用(GET、POST)
  • ステートレス
  • ステータスコードを適切に設定
  • JSONなどの形式で結果を返却
  • リソースを中心にした設計

WordPress REST API について

上記を読んでいただくとわかる通り、非常に容易に使用できるため、POSTメソッドを用いた更新については認証処理を行うことがほとんど。
WordPressでもGETは標準では誰でも利用できるが、POST処理は認証が必要である。
ただステートレスなREST APIにどのように認証処理を行うかというと、これまたブラウザと同じくCookieを用いてログインしているかどうかを判断する。
WordPressではnonce(24時間に限り有効な認証情報)がCookieにある場合にログインしているとみなし、認証されていると判断する。

※これはWordPress REST APIに限らず、WordPressでログインしたときも同様で、Cookieをそのまんまコピーすると、別のブラウザでも同じログイン状態にすることができる

APIはそもそも外部連携するためのインターフェースであり、外部連携の肝となるのは認証処理であるのだが、REST APIで認証を行うには毎回ログインの必要があるため、近年はあまり用いられない。
そのため、プラグインでOAuth認証やパスワード認証(WP5.6でコアに組み込まれる予定。参考:https://capitalp.jp/2020/10/19/wordpress-supports-application-password/)で実装されるのが一般的である。

パスワード認証について

(通常のWordPressログインパスワードではなく)そのクライアントアプリ専用のパスワードをアプリ側(WordPressなど)で生成し、それを使用して認証を行う方法のこと。別々のパスワードにすることで、セキュリティの担保が可能で、AWSでいうルートユーザーとIAMユーザーのような使い分けとなる。
昔からある仕組み。

OAuthについて

大雑把に言うと、リソースサーバーとは別にアクセストークンを発行する認可サーバーを用意し、そこで生成されたアクセストークンをAPIリクエスト時に付与することでシームレスにリソースサーバーのAPIが利用できるようにする仕組み。一度アクセストークンを付与すれば、以降は長期間、あるいはずっと再認証する必要がない。

下記がすごくわかりやすい図だったため、引用させていただく。

https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be

OAuthそのものは権限認可のための規約のことであり、これまた引用で恐縮だが、クライアントと認可サーバーのやりとりの規約のことを指す。

https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be

具体的にはアプリとFacebook連携とかで使われるアレである。