@ bagelink/ sdk (英语)
基于OpenAPI的TypeScript SDK生成器有Vue 3可相容.
特征
- QQ 从 OpenAPI 规格生成类型安全 SDK
- * * 在一个对象中加强响应-阵列+元数据
- QQ 内置认证支持
- QQ FastAPI / Pydantic 分析错误
- QQ SSE/ stream 支持类型安全
- ⚡ 请求状态管理可容性
- 有拦截器的灵活配置
安装
pnpm add @bagelink/sdk
快速启动
1. 生成 SDK
# From OpenAPI spec
VITE_BAGEL_BASE_URL=https://api.example.com bun run bin/index.ts .bagelink
2. 初始化
import { createApi } from './.bagelink/api'
createApi({
baseURL: '/api',
withCredentials: true
})
3. 使用
import { useApi } from './.bagelink/api'
const api = useApi()
const users = await api.users.get()
// Array operations
for (const user of users) {
console.log(user.name)
}
// Metadata
console.log(users.totalCount, users.page)
// Raw access
console.log(users.$raw.headers)
配置
createApi({
baseURL: '/api',
withCredentials: true,
auth: {
getToken: () => localStorage.getItem('token'),
onUnauthorized: () => router.push('/login')
},
onError: (error) => {
console.error(error.message)
if (error.fields) {
// Handle validation errors
}
},
interceptors: {
request: (config) => {
// Modify request
return config
}
}
})
州管理层
import { useApiRequest } from './.bagelink/api'
const { loading, error, data, execute } = useApiRequest(
() => api.users.get()
)
类型
将单个对象指定为普通类型:
import { unwrap } from './.bagelink/api'
const agent = ref<AgentResponse | null>(null)
agent.value = unwrap(await api.agents.getByAgentId({ agentId }))
阵列没有工作 unwrap()数字 :
const agents = ref<AgentResponse[]>([])
agents.value = await api.agents.get() // Works fine