第3章 API Designer を使用した API 定義の設計および開発
API Designer を使用して、OpenAPI 3 (または 2) 仕様に準拠する REST API 定義を設計し、開発できます。
前提条件
- OpenShift プロジェクトが作成済みである必要があります。
- API Designer サービスが OpenShift プロジェクトに追加済みである必要があります。
3.1. API Designer での REST API 定義の作成
以下の手順では、REST API 定義を作成する方法を説明します。
- Fuse Online または Fuse on OpenShift から API Designer ユーザーインターフェイスにアクセスできます。
- Fuse on OpenShift のみの場合、API Designer はステートレスです。つまり、作業が OpenShift セッション間で保存されません。セッションごとに API をローカルファイルシステムに保存する必要があります。
サンプルについて
Task Management API のサンプルは、営業コンサルタントがお客様側の担当者と対話する際に必要なタスクを追跡するために使用する可能性のある単純な API をシミュレートします。to-do タスクの例には create an account for a new contact (新規の担当者のアカウントの作成) や place an order for an existing contact (既存の担当者の注文処理) が含まれる可能性があります。Task Management API のサンプルを実装するには、複数のタスク用のパスと、特定のタスク用のパスの 2 つのパスを作成します。その後、タスクを作成し、すべてのタスクまたは特定のタスクを取得し、タスクを更新してタスクを削除する操作を定義します。
前提条件
-
作成する必要のある API のエンドポイントを把握している。Task Management API のサンプルの場合、
/todo
および/todo/{id}
の 2 つのエンドポイントがあります。 - Fuse on OpenShift のみの場合、OpenShift プロジェクトを作成しており、API Designer サービスを OpenShift プロジェクトに追加している。
手順
Fuse Online を使用している場合は、ステップ 2 に進みます。
Fuse on OpenShift を使用している場合:
- OpenShift Web コンソールにログインし、API Designer が含まれるプロジェクトを開きます。
OpenShift 4.x の場合は、Topology を選択し、apicurito-service-ui アイコンの URL リンクをクリックします。
OpenShift 3.11 の場合は、アプリケーションの一覧で API Designer の URL をクリックします (例:
https://apidesigner-myproject.192.168.64.43.nip.io
)。API Designer 用の新規ブラウザーウィンドウまたはタブが開きます。
注記API Designer は軽量バージョンの Apicurio Studio オープンソースプロジェクト であるため、Apicurio が API Designer インターフェイスに表示されます。
New API をクリックします。新規の API ページが開きます。
デフォルトでは、API Designer は OpenAPI 3 仕様を使用します。OpenAPI 2 仕様を使用する場合は、New API ボタンの横にある矢印をクリックし、OpenAPI 2 を選択します。
注記OpenAPI 2 仕様に基づいて API を開く場合、API Designer の Convert to OpenAPI 3 オプションを使用して、API が OpenAPI 3 仕様に準拠するよう変換することができます。
API 名を変更するには、以下を実行します。
- 名前にカーソルを合わせ、表示される編集アイコン ( ) をクリックします。
- 名前を編集します。たとえば、Task API を入力します。
- チェックマークアイコンをクリックして、名前変更を確認します。
任意で以下を行います。
- バージョン番号と説明を提供します。
- 連絡先情報 (名前、メールアドレス、および URL) を追加します。
- ライセンスを選択します。
- タグを定義します。
- サーバーを 1 つ以上定義します。
- セキュリティースキームを設定します。
- セキュリティー要件を指定します。
API のそれぞれのエンドポイントへの相対パスを定義します。フィールド名はスラッシュ (/) で開始する必要があります。
Task Management API のサンプルでは、2 つのパスを作成します。
-
複数のタスクのパス:
/todo
ID 別の特定タスクのパス:
/todo/{id}
-
複数のタスクのパス:
任意のパスパラメーターのタイプを指定します。
id
パラメーターのサンプルは、以下のようになります。Paths リストで、
/todo/{id}
をクリックします。id パラメーターが PATH PARAMETERS セクションに表示されます。
- Create をクリックします。
- description (説明) には、The ID of the task to find. と入力します。
type (タイプ) については、integer を 32-Bit integer として選択します。
Data Types セクションで、API の再利用可能なタイプを定義します。
- Add a data type をクリックします。
- Add Data Type ダイアログで名前を入力します。Task Management API のサンプルでは、Todo と入力します。
任意で、API Designer がデータタイプのスキーマの作成に使用するサンプルを指定できます。生成されるスキーマを編集できます。
Task Management API のサンプルでは、以下の JSON 例で開始します。
{ "id": 1, "task": "my task", "completed": false }
- オプションで、該当するデータタイプを指定して REST リソースの作成を選択できます。
Save をクリックします。サンプルを指定している場合、API Designer はそのサンプルからスキーマを生成します。
- オプションで、スキーマのプロパティーを編集し、新しいプロパティーを追加できます。
Task Management API のサンプルの場合、タイプ string の task という名前の 1 つのプロパティーを使用して、 Task という名前の別のデータタイプを作成します。
それぞれのパスについて、操作 (GET、PUT、POST、DELETE、 OPTIONS、HEAD、または PATCH) を定義します。
Task Management API のサンプルの場合、以下の表で説明されているように操作を定義します。
表3.1 Task Management API 操作 パス 操作 説明 リクエストボディー 応答 /todo
POST
新しいタスクを作成します。
メディアタイプ:
application/json
データタイプ: Taskステータスコード: 201 説明: Task created
応答ボディー: メディアタイプ:
application/json
データタイプ: Todo
/todo
GET
すべてのタスクを取得します。
該当なし
- ステータスコード: 200 説明: タスクのリスト
/todo/{id}
GET
ID 別にタスクを取得します。
該当なし
-
ステータスコード: 200 説明: Task found for ID 応答ボディー: メディアタイプ:
application/json
データタイプ: Task - ステータスコード: 404 説明: No task with provided identifier found.
/todo/{id}
PUT
ID 別にタスクを更新します。
リクエストボディーのタイプ: Task
- ステータスコード: 200 説明: Completed
- ステータスコード: 400 説明: Task not updated
/todo/{id}
DELETE
ID 別にタスクを削除します。
該当なし
- ステータスコード: 200 説明: Task deleted
- ステータスコード: 400 説明: Task not deleted
- API Designer での検証問題の解決 の説明どおりに問題を解決します。
Fuse on OpenShift のみの場合には、Save As をクリックして API 仕様を保存し、JSON または YAML 形式を選択します。
JSON または YAML ファイルがローカルダウンロードフォルダーにダウンロードされます。デフォルトのファイル名は、適切なファイル拡張子を含む
openapi-spec
です。
関連情報
- OpenAPI 仕様の詳細は、https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md を参照してください。