OpenAPI Handler
The OpenAPIHandler enables communication with clients over RESTful APIs, adhering to the OpenAPI specification. It is fully compatible with OpenAPILink and the OpenAPI Specification.
Supported Data Types
OpenAPIHandler serializes and deserializes the following JavaScript types:
- string
- number (
NaN→null) - boolean
- null
- undefined (
undefinedin arrays →null) - Date (
Invalid Date→null) - BigInt (
BigInt→string) - RegExp (
RegExp→string) - URL (
URL→string) - Set (
Set→array) - Map (
Map→array) - Blob (unsupported in
AsyncIteratorObject) - File (unsupported in
AsyncIteratorObject) - AsyncIteratorObject (only at the root level; powers the Event Iterator)
WARNING
If a payload contains Blob or File outside the root level, it must use multipart/form-data. In such cases, oRPC applies Bracket Notation and converts other types to strings (exclude null and undefined will not be represented).
Installation
sh
npm install @orpc/openapi@latestsh
yarn add @orpc/openapi@latestsh
pnpm add @orpc/openapi@latestsh
bun add @orpc/openapi@latestsh
deno install npm:@orpc/openapi@latestSetup and Integration
ts
import { OpenAPIHandler } from '@orpc/openapi/fetch' // or '@orpc/server/node'
import { CORSPlugin } from '@orpc/server/plugins'
import { onError } from '@orpc/server'
const handler = new OpenAPIHandler(router, {
plugins: [new CORSPlugin()],
interceptors: [
onError(error => console.error(error))
],
})
export default async function fetch(request: Request) {
const url = new URL(request.url)
if (url.pathname.startsWith('/api')) {
const result = await handler.handle(request, {
prefix: '/api',
context: {} // Add initial context if needed
})
if (result.matched)
return result.response
}
return new Response('Not Found', { status: 404 })
}