代码生成
RTK Query的API和架构是围绕预先声明API端点进行设计的。这非常适合从外部API模式定义(如OpenAPI和GraphQL)自动生成API切片定义。
我们提供了代码生成能力的早期预览作为单独的工具。
GraphQL
我们提供了一个GraphQL Codegen的插件。你可以在graphql-codegen主页上找到该文档。
要查看如何使用它的完整示例,你可以查看此示例项目。
OpenAPI
我们提供了一个从OpenAPI模式生成RTK Query代码的包。它被发布为@rtk-query/codegen-openapi
,你可以在packages/rtk-query-codegen-openapi
找到源代码。
使用方法
使用createApi
创建一个空的api,如下所示
src/store/emptyApi.ts
// 或者从'@reduxjs/toolkit/query'导入,如果不使用自动生成的钩子
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
// 初始化一个空的api服务,我们将在后面根据需要注入端点
export const emptySplitApi = createApi({
baseQuery: fetchBaseQuery({ baseUrl: '/' }),
endpoints: () => ({}),
})
生成一个配置文件(json,js或ts)内容如下
openapi-config.ts
import type { ConfigFile } from '@rtk-query/codegen-openapi'
const config: ConfigFile = {
schemaFile: 'https://petstore3.swagger.io/api/v3/openapi.json',
apiFile: './src/store/emptyApi.ts',
apiImport: 'emptySplitApi',
outputFile: './src/store/petApi.ts',
exportName: 'petApi',
hooks: true,
}
export default config
然后调用代码生成器:
npx @rtk-query/codegen-openapi openapi-config.ts