Open3

APIデザイン・パターンを読む

hamasato0000hamasato0000

書籍「APIデザイン・パターン」を読み、学んだ内容や思ったことなどを雑にまとめていく。
全部読むとは限らないので、まとめる内容がまちまちになったり、途中でやめるかも。

https://amzn.asia/d/cU5mcLQ

hamasato0000hamasato0000

12章 シングルトンサブリソース

まとめ

  • 必要な場合、リソースを構成するプロパティを別のリソースとして分離しよう

シングルトンサブリソースとは

  • あるリソースのプロパティを個別のリソースとして分離したもの
  • 親リソースのプロパティであり、リソースでもある

何故シングルトンサブリソースに分離するのか

一般的な理由は以下の通り。

  1. サイズ
  • 特定のプロパティのサイズが大きい
    • ネットワークコストがかかる
    • IoT機器など計算リソースが限られるクライアントにとっては辛い
  • 例:S3のAPIは実際のオブジェクトデータとメタデータを分離している
  1. 複雑さ
  2. セキュリティ
  • リソースの特定のプロパティと他のプロパティでアクセス制限が異なるとき
  • 例:従業員の氏名は誰でもアクセスできるが、従業員の給料は一部のユーザーしかアクセスできないようにするため、サブリソースとして分離する
  1. ボラティリティ
  • リソースの特定のプロパティと他のプロパティのアクセスパターンが異なるとき
  • 例:頻繁に更新するプロパティをサブリソースとして分離する

階層構造

  • シングルトンサブリソースは親リソースにアタッチされるべき
  • あるシングルトンサブリソースが、他のシングルトンサブリソースの子や親であってはならない

★★★これは単に複雑になるからシングルトンサブリソースの多重階層はやめろってことか?

APIの実装

標準メソッド 振る舞い
Get サブリソース
Update サブリソース
Create 親リソースのプロパティ
Delete 親リソースのプロパティ
List なし

GetとUpdate

  • 他のリソースと同様に動作
  • サブリソースを一意に特定してGet、Updateする

Create

  • 親のリソースの作成ど同時に初期化する
  • 適切なデフォルト値を設定しておく必要がある

Delete

  • 親のリソースの削除と同時に削除する
    • RDBにおけるカスケード削除のような振る舞い

Reset

  • Createで初期化したときのデフォルト値に戻すResetメソッドがあると良い
hamasato0000hamasato0000

第1章 API入門

Web APIとは

  • APIとは、コンピュータシステムとやりとりする方法を定義するもの
  • Web APIとは、ネットワーク上で公開され、リモートで使用することを目的として作られたAPI
  • APIの変更は利用者への影響が大きい

APIの重要性

  • APIはコンピュータが安全かつ安定してやり取りする方法を提供するもの
    • コンピュータ向け
  • 人間向けのソフトウェアの場合(例えばGUI)
    • コンピュータにGUIの操作を教えるのは難しい

リソース指向API

  • APIによってやり取りする概念(リソース)によってAPIを標準化
    • 標準メソッドとリソース
標準メソッド 説明
Get 既存のリソースに関する情報を取得する
Create 新しいリソースを作成する
List 既存のすべてのリソースの一覧を取得する
Update 既存のリソースを更新する
Delete 既存のリソースを削除する