Appearance
REST APIs
| メソッド | 用途 |
|---|---|
| GET | 取得 |
| POST | 作成 |
| PUT/PATCH | 更新 |
| DELETE | 削除 |
| コマンド | 用途 |
|---|---|
curl -X GET <url> | API疎通確認 |
curl -X POST <url> | API経由で作成 |
セキュリティ設計原則
REST APIをセキュアにするための設計原則(Saltzer & Schroeder)。
| 原則 | 説明 |
|---|---|
| Economy of mechanism(効率的なメカニズム) | 出来る限りシンプルな設計を行う |
| Fail-safe defaults(フェールセーフなデフォルト) | 除外ではなく許可によってアクセス権限を決定する。デフォルトでアクセス権限を与えない |
| Complete mediation(完全な仲介) | オブジェクトへのアクセスには権限のチェックが必要 |
| Open design(オープンな設計) | オープンな方法でシステムを構築する |
| Separation of privilege(権限の分離) | より堅牢にするため可能な場合はロック解除に必要なキーの数を2つとする |
| Least privilege(最小特権) | プログラムやユーザは業務の遂行に関して必要となる最小限の権限のみを使用する |
| Least common mechanism(共通メカニズムの最小化) | 複数のユーザで共有するものを最小限に抑える |
| Psychological acceptability(心理学的受容性) | ユーザのミスを最小限に抑えるためユーザインターフェースをわかりやすい設計にする |
HTTPステータスコード
| コード | 意味 |
|---|---|
| 200 OK | リクエストが成功 |
| 202 Accepted | リクエストを受理したが処理が完了していない |
| 204 No Content | リクエストを受理したが返す内容がない |
| 301 Moved Permanently | リソースが恒久的に変更されている |
| 302 Found | リソースが一時的に変更されている |
| 400 Bad Request | サーバ側がリクエストを処理できない |
| 401 Unauthorized | 認証が必要 |
| 403 Forbidden | リソースへのアクセスが拒否された |
| 404 Not Found | リソースが見つからない |
| 405 Method Not Allowed | リクエストしたHTTPメソッドが許可されていない |
| 503 Service Unavailable | サービスが利用できない(メンテナンス中やサーバダウン) |
| 504 Gateway Timeout | ゲートウェイ/プロキシが上流サーバからのレスポンスを時間内に得られなかった |
重要: 204 No ContentはDELETEやPUTが正しく処理された場合に返される(返すボディがない)。