Orvalの設定
API 呼び出し方式の選択で「TanStack Query」を選択した方 はこの作業を実施する必要がありません。
Orval を用いて OpenAPI 仕様からコードを自動生成するための設定手順について解説します。
設定手順は以下の 4 ステップです。
- OpenAPI の定義ファイルを配置する
- orval.config.ts を作成する
- Axios のカスタムインスタンスを作成する
- コードを自動生成する
1. OpenAPI の定義ファイルを配置する
OpenAPI 仕様が定義された openapi.yml
を配置します。
プロジェクトのルート
|- openapi
|- openapi.yml ※配置場所はあくまで一例です
|- ...
省力化コンポーネントのサンプルアプリではopenapi_todo.yamlを使用しています。
2. orval.config.ts を作成する
orval.config.ts
という Orval の設定ファイルをプロジェクトのルート直下に作成します。
プロジ ェクトのルート
|- orval.config.ts
|- ...
設定ファイルに記述する内容はConfiguration(公式サイト)を参照してください。
最低限設定する必要がある項目は input
と output
です。
省力化コンポーネントのサンプルアプリではorval.config.tsを使用しています。
3. Axios のカスタムインスタンスを作成する
Orval に設定するための Axios のカスタムインスタンスを作成します。 カスタムインスタンスを作成することで、API リクエストに必要な共通設定を一元化できます。
プロジェクトのルート
|- src
|- libs
|- backend
|- customInstance.ts ※配置場所はあくまで一例です
省力化コンポーネントは、Axios のカスタムインスタンスを以下の表に示すシンプル版と拡張版の 2 種類に定義しています。
種類 | 説明 |
---|---|
シンプル版 |
|
拡張版 |
|
4. コードを自動生成する
1 ~ 3 の設定を行うことで、Orval を利用したコードの自動生成が行えるようになります。
まず、 package.json
に以下の定義を追記してください。
{
...
"scripts": {
...
"code-gen": "npx orval --config ./orval.config.ts"
},
...
}
次に、ターミナルで以下のコマンドを実行してください。実行後、手順 3 で output
の中に指定した出力先にソースコードが自動生成されます。
npm run code-gen
実装ガイドのハンズオンで使用する API クライアントコードの生成手順
実装ガイド > 登録画面を作る では、ハンズオン形式で API 呼び出し処理の実装方法について解説しています。
その中で使用する API クライアントコードの作成手順を以下に示します。
1. OpenAPI の定義ファイルを配置する
ハンズオンでは、以下のOpenAPI仕様書を用いています。ハンズオンで使用するOpenAPI
openapi: 3.0.0
info:
title: User API
version: "1.0.0"
description: User registration API for submitting user information
paths:
/user:
post:
summary: Register a new user
description: Creates a new user with specified information.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
userName:
type: string
description: User's username
password:
type: string
description: User's password
gender:
type: string
description: User's gender
birthDay:
type: string
description: User's birth date
terminalNum:
type: number
description: Optional terminal number for the user
required:
- userName
- password
- gender
- birthDay
responses:
"201":
description: User created successfully
"400":
description: Invalid input
2. orval.config.ts を作成する
省力化コンポーネントのサンプルアプリで使用している設定ファイルと同様の内容で作成します。※
target
には、1で作成したymlファイルを指定します。input: {
target: "./openapi/openapi.yaml",
},
3. Axios のカスタムインスタンスを作成する
Orval の公式サイトと同様の内容で、シンプル版のカスタムインスタンスを作成します。4. コードを自動生成する
手順4を実行し、以下のような構成でAPIクライアントコードが自動生成されます。※ 生成場所は、
orval.config.ts
の設定内容によって変わります。//root//
└── src
├── framework
└── libs
└── generated
├── default - APIクライアントコード
└── model - 型定義
以上で、Orval の設定は完了です。
自動生成されたコードを用いて実際に API を呼び出す方法については、CRUD 機能の実装を参照してください。