💭

RESTful API

2023/07/18に公開

APIとは

(Application Programming Interfaceの略)

  • ソフトウェア間で情報を交換するためのインターフェース(つながり)のこと

APIはプログラム同士が情報を交換するための共通の言語やルールのようなもので、
一方のソフトウェアが他方のソフトウェアに特定の機能を実行させるための手段を提供します。

例えば、ウェブサイト上で地図サービス(Google Mapsなど)を利用したいとき、
ウェブサイトの開発者はGoogle MapsのAPIを使うことで、
自分のウェブサイト上に地図を表示させたり、特定の場所を検索したり、
ルートを表示させるなどの機能を実装できます📍

このように、APIは一つのソフトウェアが他のソフトウェアの機能や
データを活用するための「橋渡し」の役割を果たします。

特定の機能やサービスを提供する企業や開発者がAPIを公開することで、
その機能やサービスが他のアプリケーションからも利用され、より広範囲での活用が可能になります。

https://wa3.i-3-i.info/word12428.html

RESTとは

Representationalー代表的な
Stateー状態
Transferー転送 の略

  • ウェブ上でデータを送受信するための一種のアーキテクチャスタイル

リソース(ウェブ上の特定の情報)をURLで指定し、
HTTPメソッド(GET、POST、PUT、DELETEなど)を用いて
そのリソースに対する操作を行うというスタイルを指します。

RESTは特定のプロトコルではなく、設計のパラダイムまたは設計原則を表し、
これに従って設計されたシステムは 「RESTful」 と形容されます!

つまり、
APIとは、"Application Programming Interface"の略で、
アプリケーション間で情報をやり取りするための規約(インターフェース)のことを指します。

一方、RESTful APIはそのAPIの設計原則を指します。

RESTful APIは、ステートレスな設計であるため、各リクエストは独立していて
全ての必要な情報を含んでいるべきです。

これにより、サーバー側ではクライアントの状態を保持する必要がなく、スケーラビリティと信頼性が向上します。

もっと分かりやすく!

図書館を使った例

図書館で本を借りたり、返したり、新しく本を登録したりする時、ルールがあって、それに従うようにします。これが図書館の「システム」だと思ってください。

インターネットの世界でも、コンピュータやスマホのアプリが、インターネット上の図書館(ウェブサーバー)から情報(データ)を借りたり、新しい情報を登録したりするためには、ルールが必要です。これが 「API」 です。

そしてその中でも、「RESTful API」は、特定のルールを使って情報をやり取りする方法の一つです。
つまり、「本を借りる時はこうする」「本を返す時はこうする」「新しい本を登録する時はこうする」というのが、それぞれ「GETメソッド」「POSTメソッド」「PUTメソッド」に対応します。

そして、「RESTful API」の特徴は、各操作が独立していて、それぞれの操作に必要な全ての情報が含まれていることです。

これは、例えば「本を借りる時は図書カードだけを見せればいい」みたいな感じです。

このように、ルールを守って正しく情報をやり取りすることで、コンピュータやアプリは正しく動くようになります。これが「RESTful API」の役割となります。

RESTの設計原則

  • アドレス可能性(Addressability)
    すべてのリソースは一意なURL(Uniform Resource Locator)によってアクセスできる必要があります。URLはリソースの場所を指すためのアドレスで、この原則により、各リソースがネットワーク上で明確に識別できるようになります。例えば、/users/123というURLは、IDが123のユーザーというリソースを指します。

  • 統一インターフェース(Uniform Interface)
    RESTは一貫性のあるインターフェースを提供することを目指します。
    HTTPメソッド(GET, POST, PUT, DELETE等)はリソースに対する一連の標準的な操作を定義し、これによりクライアントはリソースに対してどのように操作すればよいかを予測可能にします。

  • ステートレス性(Stateless)
    れぞれのリクエストは独立して完結するべきで、サーバー側でクライアントの状態を保持しないことを示しています。すなわち、リクエスト間で情報が保持されることはありません。すべての必要な情報は、各リクエスト内で完結して提供されるべきです。これにより、サーバーのスケーラビリティと信頼性が向上します。

  • 接続性(Connectedness)
    クライアントがアプリケーションの状態を操作するために必要な情報をサーバーから受け取るという原則です。これにより、クライアントは最初にアクセスするリソースから他のリソースへのリンクを動的に探索することが可能になります。これはウェブブラウザがウェブページのリンクをたどるのと似た概念です。

RESTful APIはこれらの原則に従うことで、ウェブサービスが拡張性と保守性を持ち、
複数のクライアント(ブラウザ、モバイルアプリ、他のサーバなど)と容易に通信することができます!

参考にさせていただいた記事🌱

https://qiita.com/NagaokaKenichi/items/0647c30ef596cedf4bf2

https://tech-parrot.com/programming/describe-about-restful-api/

https://aws.amazon.com/jp/what-is/restful-api/#:~:text=REST アーキテクチャを実装する,意味で使用できます。

Discussion