Open3
APIデザイン・パターンを読む
書籍「APIデザイン・パターン」を読み、学んだ内容や思ったことなどを雑にまとめていく。
全部読むとは限らないので、まとめる内容がまちまちになったり、途中でやめるかも。
12章 シングルトンサブリソース
まとめ
- 必要な場合、リソースを構成するプロパティを別のリソースとして分離しよう
シングルトンサブリソースとは
- あるリソースのプロパティを個別のリソースとして分離したもの
- 親リソースのプロパティであり、リソースでもある
何故シングルトンサブリソースに分離するのか
一般的な理由は以下の通り。
- サイズ
- 特定のプロパティのサイズが大きい
- ネットワークコストがかかる
- IoT機器など計算リソースが限られるクライアントにとっては辛い
- 例:S3のAPIは実際のオブジェクトデータとメタデータを分離している
- 複雑さ
- セキュリティ
- リソースの特定のプロパティと他のプロパティでアクセス制限が異なるとき
- 例:従業員の氏名は誰でもアクセスできるが、従業員の給料は一部のユーザーしかアクセスできないようにするため、サブリソースとして分離する
- ボラティリティ
- リソースの特定のプロパティと他のプロパティのアクセスパターンが異なるとき
- 例:頻繁に更新するプロパティをサブリソースとして分離する
階層構造
- シングルトンサブリソースは親リソースにアタッチされるべき
- あるシングルトンサブリソースが、他のシングルトンサブリソースの子や親であってはならない
★★★これは単に複雑になるからシングルトンサブリソースの多重階層はやめろってことか?
APIの実装
標準メソッド | 振る舞い |
---|---|
Get | サブリソース |
Update | サブリソース |
Create | 親リソースのプロパティ |
Delete | 親リソースのプロパティ |
List | なし |
GetとUpdate
- 他のリソースと同様に動作
- サブリソースを一意に特定してGet、Updateする
Create
- 親のリソースの作成ど同時に初期化する
- 適切なデフォルト値を設定しておく必要がある
Delete
- 親のリソースの削除と同時に削除する
- RDBにおけるカスケード削除のような振る舞い
Reset
- Createで初期化したときのデフォルト値に戻すResetメソッドがあると良い
第1章 API入門
Web APIとは
- APIとは、コンピュータシステムとやりとりする方法を定義するもの
- Web APIとは、ネットワーク上で公開され、リモートで使用することを目的として作られたAPI
- APIの変更は利用者への影響が大きい
APIの重要性
- APIはコンピュータが安全かつ安定してやり取りする方法を提供するもの
- コンピュータ向け
- 人間向けのソフトウェアの場合(例えばGUI)
- コンピュータにGUIの操作を教えるのは難しい
リソース指向API
- APIによってやり取りする概念(リソース)によってAPIを標準化
- 標準メソッドとリソース
標準メソッド | 説明 |
---|---|
Get | 既存のリソースに関する情報を取得する |
Create | 新しいリソースを作成する |
List | 既存のすべてのリソースの一覧を取得する |
Update | 既存のリソースを更新する |
Delete | 既存のリソースを削除する |