Skip to content

Commit 6c9af81

Browse files
authored
前提条件を切り出し (#61)
1 parent a3f2bdf commit 6c9af81

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,7 @@ meta:
1919

2020
## 前提条件
2121

22-
本規約は以下の前提で作成されたものである。
23-
24-
- 業務システム向けの Web API 提供
25-
- サードパーティ向けに広く開発する Web API ではなく、限られたクライアントやシステムと連携すること
26-
- いわゆる、LSUDs(Large Set of Unknown Developers)ではなく、SSKDs(Small Set of Known Developers)を対象とする
27-
- RESTish
28-
- 原理的な REST を必ずしも守る必要はないが、例えば HTTP メソッドは、参照は GET、登録は POST、更新は PUT や PATCH、削除は DELETE で使い分けていたり、Web API の要求が成功すれば 200(OK)、204(No Content)を返し、リソースが無ければ 404(Not Found)、操作に失敗すれば 500 系のエラーを返すといったことを指す
29-
- 本規約を利用するに当たり必須条件ではないが、定義例などはそれに基づいて記載しているので注意する
30-
- スキーマファースト
31-
- OpenAPI Specification の定義ファイルを駆動に、クライアント・サーバサイドのコード生成やモック時の利用に用い、高速な Web API 開発につなげることを前提とする
32-
- Python における、FastAPI・Django REST Framework のように、アプリケーションコードから OpenAPI document を自動生成する開発手法も存在するが、本規約はこれは想定しない
33-
- 定義ファイルの完成度はできるかぎり高め、コード生成やドキュメントの価値を高める
34-
- OAS 定義からコードを生成し、通常は記載した型・項目長・最大~最小・enum・必須定義・正規表現フォーマットでバリデーションを行い、カバーできない部分のバリデーションをアプリケーション固有ロジックとして実装する方針とする。例えば、複数項目間のチェックや DB を確認しないと行えないチェックである
35-
- ドキュメントとしての価値を高めるため、その API 呼び出しで発生しうる全ての HTTP ステータスコードを記載する
36-
- API の振る舞いを読み手に伝えるものとして、どのような異常系があるかは有用な場合が多いからである
37-
- JavaScript/TypeScript、Java、Go のエコシステムがターゲット
38-
- OpenAPI Specification は広く受け入れられており、コレに対応する様々なツールやフレームワークといったエコシステムがあり、中には定義された設定がうまく認識されない場合がある。本規約では対応していないツールが多い場合、特定の記法を非推奨とすることがあり、同時にその理由も説明する
39-
- 全ての言語・フレームワーク・ツールの対応状況は調査しきれていないため、利用するプロダクトの対応状況は利用者側で確認をお願いする
22+
[Web API設計の前提条件](prerequisite.md)を参照ください。
4023

4124
# Web API 自体の設計について
4225

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# 前提条件
2+
3+
本規約は以下の前提で作成されたものである。
4+
5+
- 業務システム向けの Web API 提供
6+
- サードパーティ向けに広く開発する Web API ではなく、限られたクライアントやシステムと連携すること
7+
- いわゆる、LSUDs(Large Set of Unknown Developers)ではなく、SSKDs(Small Set of Known Developers)を対象とする
8+
* RESTish なWeb API
9+
* 原理的なRESTを必ずしも守る必要はないが、例えばHTTPメソッドは、参照はGET、登録はPOST、更新はPUTやPATCH、削除はDELETEで使い分けていたり、Web APIの要求が成功すれば200(OK)、204(No Content)を返し、リソースが無ければ404(Not Found)、操作に失敗すれば500系のエラーを返すといったことを指す
10+
* 本規約を利用するに当たり必須条件ではないが、定義例などはそれに基づいて記載しているので注意する
11+
- スキーマファースト
12+
- OpenAPI Specification の定義ファイルを駆動に、クライアント・サーバサイドのコード生成やモック時の利用に用い、高速な Web API 開発につなげることを前提とする
13+
- Python における、FastAPI・Django REST Framework のように、アプリケーションコードから OpenAPI document を自動生成する開発手法も存在するが、本規約はこれは想定しない
14+
- 定義ファイルの完成度はできるかぎり高め、コード生成やドキュメントの価値を高める
15+
- OAS 定義からコードを生成し、通常は記載した型・項目長・最大~最小・enum・必須定義・正規表現フォーマットでバリデーションを行い、カバーできない部分のバリデーションをアプリケーション固有ロジックとして実装する方針とする。例えば、複数項目間のチェックや DB を確認しないと行えないチェックである
16+
- ドキュメントとしての価値を高めるため、その API 呼び出しで発生しうる全ての HTTP ステータスコードを記載する
17+
- API の振る舞いを読み手に伝えるものとして、どのような異常系があるかは有用な場合が多いからである
18+
- JavaScript/TypeScript、Java、Go のエコシステムがターゲット
19+
- OpenAPI Specification は広く受け入れられており、コレに対応する様々なツールやフレームワークといったエコシステムがあり、中には定義された設定がうまく認識されない場合がある。本規約では対応していないツールが多い場合、特定の記法を非推奨とすることがあり、同時にその理由も説明する
20+
- 全ての言語・フレームワーク・ツールの対応状況は調査しきれていないため、利用するプロダクトの対応状況は利用者側で確認をお願いする

0 commit comments

Comments
 (0)