ReduxToolkit RTKQuery: データフェッチとキャッシュのライブラリだが、Code Generation | Redux Toolkitのようにコード生成ができる。
The OpenAPI specification is a language-agnostic definition format used to describe RESTful APIs. OpenAPI仕様は、 RESTfulAPIを記述するために使用される言語に依存しない定義形式です。 より
ざっくり理解
flowchart LR A["OpenAPI定義ファイル<br />(hoge.yml)"] -->B["RTK Query Code Generation<br />(hoge.ts)"] -->C["使える!<br />(redux storeに定義したり、各コンポーネントでAPI呼び出し)"]
q: hoge.yml
はどんな感じで生成するの?
package.json"scripts": { "gen:api": "rtk-query-codegen-openapi ./openapi-config.json", }, "dependencies": { "@reduxjs/toolkit": "^1.8.0", "@rtk-query/codegen-openapi": "^1.0.0-alpha.1", "react-redux": "^7.2.6" } }
のように、コマンドで一気に、APIエンドポイントの生成をすることができる。
{ "schemaFile": "./hoge.yaml", // OpenAPIの仕様書 "apiFile": "./template.ts", // createApi呼び出し箇所 "outputFile": "./index.ts", // OpenAPIの仕様書から作成される実際のAPI呼び出しやリクエスト・レスポンスなど "exportName": "api", // export名 "hooks": true // hooksを生成するか ex) useHogeHoge }
hoge.ymlswagger: '2.0' info: title: 'hoge.proto' version: 1.0.0 description: 'お試し' consumes: - application/json produces: - application/json host: 'hoge.com' basePath: '/v1' schemes: - 'https' paths: ...
みたいなファイル
OpenAPI Specification - Version 3.0.3 | Swaggerに定義が載っている。
.proto
ファイルを使用して、APIを定義する。
IDL(インターフェース定義言語)
API 設計: gRPC、OpenAPI、REST の概要と、それらを使用するタイミングを理解する | Google Cloud Blog