JSPM

  • Created
  • Published
  • Downloads 18286
  • Score
    100M100P100Q146510F
  • License MIT

Convert OpenAPI 3.0 or Swagger 2.0 definitions into aspida

Package Exports

  • openapi2aspida

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (openapi2aspida) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

OpenAPI / Swagger to aspida


aspida

Convert OpenAPI 3.0 and Swagger 2.0 definitions into aspida.



Breaking change ⚠️

2021/03/15

Since openapi2aspida >= 0.16.0 , requires TypeSciprt 3.8 or higher for Type-Only Imports.

2020/11/26

Since openapi2aspida >= 0.14.0 , request headers are forced to be optional.

2020/11/14

Since openapi2aspida >= 0.13.0 , optional for aspida only if the 'required' property of OpenAPI is set to false.

Getting Started

Compatible with yaml/json of OpenAPI3.0/Swagger2.0

$ mkdir petstore-api
$ cd petstore-api
$ npx openapi2aspida -i https://petstore.swagger.io/v2/swagger.json # or ../local-swagger.yaml
# api/$api.ts was built successfully.

$ npm init -y
$ npm install @aspida/axios axios typescript ts-node @types/node

index.ts

import axiosClient from '@aspida/axios'
import api from "./api/$api"
import type { Pet } from './api/@types'

;(async () => {
  const client = api(axiosClient())
  const petId = 100
  const body: Pet = {
    id: petId,
    name: 'hoge',
    photoUrls: [],
    status: 'available'
  }

  await client.pet.$post({ body })
  const pet = await client.pet._petId(petId).$get()
  console.log(pet)
})()

package.json

{
  "scripts": {
    "start": "ts-node index.ts"
  }
}
$ npm start
# { id: 100, name: 'hoge', photoUrls: [], tags: [], status: 'available' }

Build from config file

Create config file in project root

aspida.config.js

module.exports = {
  input: "api", // "input" of aspida is "output" for openapi2aspida
  outputEachDir: true, // Generate $api.ts in each endpoint directory
  openapi: { inputFile: "https://petstore.swagger.io/v2/swagger.json" }
}
$ npx openapi2aspida

License

openapi2aspida is licensed under a MIT License.