奥帕皮 (OpenAPI)
Opapi是一个高度有意见的库,使用打字符从OpenAPI规格生成服务器,客户端和文件.
使用量
安装软件包并开始创建您的 OpenAPI 规格 。 参见以下例子:
import { OpenApi, schema } from '@bpinternal/opapi'
import { z } from 'zod'
const api = new OpenApi({
metadata: {
title: 'Example API', // This is the title of the API
description: 'Description of this api', // This is the description of the API
server: 'https://api.example.com', // This is the base URL of the API
version: '0.1.0', // This is the version of the API
prefix: 'v1', // This prefix will be added to all routes
},
// This is metadata to be used in the documentation
section: {
User: {
title: 'User',
description: 'User related endpoints',
},
},
// This is where you define your schemas that will be used in the API
// You can use the `ref` function to reference a schema
schemas: {
User: {
section: 'User', // This is the section where this schema will be displayed in the documentation
schema: schema(
z.object({
id: z.string(),
name: z.string(),
}),
{
description: 'User schema',
},
),
},
},
// This is the error definitions that will be used in the API
errors: [
{
status: 403,
type: 'Forbidden',
description: "The requested action can't be perform by this resource.",
},
{
status: 400,
type: 'InvalidPayload',
description: "The request payload isn't invalid.",
},
{
status: 405,
type: 'MethodNotFound',
description: 'The requested method does not exist.',
},
],
})
api.addOperation({
name: 'listUsers',
description: 'List all users',
method: 'get',
path: '/users',
section: 'User',
parameters: {
name: {
in: 'query',
type: 'string',
description: 'Name filter for the users',
},
},
response: {
description: 'Returns a list of User objects.',
schema: z.object({
users: openapi.getModelRef('User'),
}),
},
})
api.exportServer('./gen/server') // This will generate a server that can be used with any framework
api.exportClient('./gen/client') // This will generate a client that can be used to query the API
免责声明
此软件包将在 @bpinternal 组织。 这个组织的所有软件包都用于 瓶装 内部的团队 并不适合我们的社区。 由于这些软件包适合我们自己的使用情况,它们可能不稳定的API,在没有警告的情况下接受中断的更改,文件很少,缺乏以社区为重点的支持。 然而,这些软件包仍然被故意公开,其重要原因如下: 我们爱开源. 因此,如果您想要安装或叉子,这个软件包完全可以自由操作。 我们强烈建议你正确标记你的版本.
博讯工程组.