[面接の質問] RESTful APIとは何ですか?
RESTful APIに関する面接の質問まとめ
RESTful API
RESTfulなAPIを指す。
이미지를 불러올 수 없습니다.
。極めて当たり前の言葉だが、まさにその通りだ! それでは、各単語の意味を見ていけば、RESTful APIがどのようなものなのかが分かるだろう。
API
Application Programming Interfaceの略称。 定義およびプロトコルの集合を用いて、2つのソフトウェアコンポーネントが相互に通信できるようにするメカニズム。
このように定義されている。私なりの理解で言えば、ソフトウェアのコンポーネント同士でもオブジェクトなどを扱う方法がそれぞれ異なるため、この隔たりを処理するために規約を定め、相互に通信・相互作用できるようにしたものを指すと考えてよいだろう。
REST
Representational State Transferの略称。 World Wide Webなどの分散ハイパーメディアシステムのためのソフトウェアアーキテクチャの一つ。
RESTは当初、インターネットのような複雑なネットワークにおける通信を管理するための指針として作成され、大規模な通信において安定したサポートが可能であると言われ、実装や修正も容易である。
RESTアーキテクチャの原則
-
一様なインターフェース (Uniform Interface)
-
サーバーが標準形式で情報を送信する
-
標準形式は、サーバー内のリソースの内部表現とは異なる場合がある
-
同一のリソースに対するすべてのAPIリクエストは、特定の言語やプラットフォームに関係なく同一である
-
-
ステートレス (Stateless)
-
各リクエストは、他のすべてのリクエストに対して独立している
-
サーバーは追加情報なしにリクエストを完全に理解し、実行できる
-
-
階層化システム (Layered System)
-
クライアントのリクエストを処理するために連携して動作する様々なアプリケーションが存在する
-
サーバーは多層構造で構成され、サーバーとクライアントの間にも、承認された仲介者が存在し得る
-
プロキシ、ゲートウェイなどの中間媒体、暗号化、ロードバランシング層などが追加され得る
-
クライアントには見えない状態が維持される
-
-
キャッシュ可能性 (Cacheable)
-
サーバーの応答時間を改善するために、一部の応答を保存するキャッシュをサポート
-
クライアント側またはサーバー側でキャッシュを実装する
-
-
オンデマンドコード (On Demand Code)
-
一般的に静的なリソースを送信
-
必要に応じて実行コードをレスポンスに含め、クライアント機能を一時的に拡張またはカスタマイズ可能
-
RESTful APIの利用メリット
-
スケーラビリティ
- クライアントとサーバー間の相互作用を最適化するため、規模の調整が可能
-
柔軟性
-
完全なクライアント・サーバー分離をサポート
-
各部分が独立して発展できるよう、サーバーコンポーネントを簡素化・分離
-
-
独立性
-
使用される技術に依存しない
-
APIの設計に関係なく、様々なプログラミング言語を使用してクライアントおよびサーバーアプリケーションを作成し、技術を変更できる
-
まとめ
RESTful APIとは? RESTアーキテクチャを使用したアプリケーションプログラミングインターフェースを指し、RESTアーキテクチャの原則に準拠したプログラム間の相互作用を定めた規約である。
では、どのような利点があるのでしょうか? 当該APIを使用する場合、拡張性、柔軟性、独立性の面でメリットがあると言える!
参考
[[AWS] RESTful APIとは何ですか?](https://aws.amazon.com/ko/what-is/restful-api/
)
댓글 작성
게시글에 대한 의견을 남겨 주세요.