RESTful Web APIs 読書メモ(14)

Appendix C. An API Designer's Guide to the Fielding Dissertation

アーキテクチャ特性

  • Low Entry-barrier
    • FTPやTelnetのようにたくさんのコマンドを駆使する必要がない
    • 使い方を学ぶのが容易で、サイト構築も容易
  • Extensibility
  • Distributed Hypermedia
  • Internet-scale

アーキテクチャ制約

  • Client-Servet
    • webにおける通信は1:1
  • Statelessness
    • クライアントがリクエストを作らなければ、サーバーはクライアントの存在を知らない
  • Caching
    • キャッシュから前回のレスポンスを再利用することで、通信を抑える
  • Uniform Interface
    • リソースの一意化
      • リソースは安定したURIで一意化される
    • 表現を通したリソースの操作
      • サーバーはクライアントに表現を送ることで、リソース状態を記述
      • クライアントはサーバーにアプリケーション状態を送ることでリソース状態を操作する
    • 自己記述メッセージ
      • すべての情報は、リクエストやレスポンスがリンクを介してメッセージ自身に含まれることを理解する必要がある
    • ハイパーメディア制約
      • サーバーはハイパーメディアメニューを送ることでアプリケーション状態を操作する
        • メニューとは、クライアントが自由に操作できるオプション
  • Layered System
    • クライアントとサーバーの間に入れられたプロキシは不可視
  • Code on Demand
    • サーバーはデータと一緒に実行コードを送ることができる
    • クライアントのリクエストで、自動的に配置される
    • コードの変更でも自動的に再配置される