1. はじめに
Web APIについて勉強していると「RESTとは何か」「RESTでAPIを作れ」という記述を見かけますが、「なぜRESTなのか」についてはあまり見かけなかったので経緯を簡単にまとめてみました。(参考にした文献は最後に記載しています)
2. REST以前の時代
・1999年まで、API開発に決まったプロトコルは無かった(RPC(Remote Procedure Call)というプロトコルはあったが、派生の型が沢山生まれていた)
・1999年にSOAP(Simple Object Access Protocol)、2000年にREST(Representational State Transfer)が登場した
3. SOAPとREST
・API開発の初期には、SOAPが広く採用された。SOAPは、XMLベースで、アプリケーション間で構造化された情報をやり取りするためのプロトコルとして開発されている
・SOAPの強みは、高度な構造化・強い型付けによる堅牢性だったが、メッセージが冗長になりやすくネットワーク帯域幅の影響を受けやすい、仕様が厳格で開発者にとっては扱いづらいといった欠点があった
・一方、RESTはシンプルさに重点を置き、使いやすいという利点があった。GET、POST、PUT、DELETEのような標準的なHTTPメソッドを使うことができ、またクライアントとサーバーを分離することで、内部のメンテナンスや新機能の導入を容易にした。
・RESTはその後広く普及し、現在SOAPはあまり使用されなくなっている
4. RESTの課題と今後
・RESTでは以下の3つの課題がある
➀オーバーフェッチング(エンドポイントを叩いたときに不要なデータまで取得してしまうことがある)
⓶アンダーフェッチング(必要なデータを得るためのエンドポイントが複数に分かれている場合、その分リクエストを送る必要があり、負荷が増加、レスポンスが悪化することがある)
③アプリケーションの仕様が複雑だったり、色々なユースケースに対応したりするためには、エンドポイントを多く作る必要があり、管理が難しくなる
・上記のRESTの課題を解決するため、2015年にFacebookがGraphQLを公開した。エンドポイントを管理する必要がないなど優れている点があるが、学習コストが高い、歴史が浅く情報が少ないといった課題もあり、今でも(2024年時点)RESTが広く使われている
参考
・REST APIとGraphQLの歴史を分かりやすくまとめてみる
https://www.engilaboo.com/rest-api-graphql-history/
・From SOAP to REST: Tracing The History of APIs
https://blog.treblle.com/from-soap-to-rest-tracing-the-history-of-apis/
・The History of REST APIs
https://blog.readme.com/the-history-of-rest-apis/