apryl
TypeScript icon, indicating that this package has built-in type declarations

0.1.5 • Public • Published

Apryl: A minimal TypeScript web API interface generator

Apryl is a package that allows you to create minimal, TypeScript-compatible web API interfaces using simple function definitions.

Installation

npm install apryl

Usage

Below is a minimal usage for creating a Nuxt 3 (H3-based) server handler. Other (e.g. Express) handlers can be created easily, and PRs are welcome.

// ~/server/api/[...].ts
// (a catch-all route)
import { createH3Handler, Server } from 'apryl'

export class MyServer extends Server {

  // Define your API functions here
  async hello({ name }: { name: string }) {
    return { message: `Hello, ${name}!` }
  }
  // Note that:
  // - both the argument and return types must be an object not a primitive.
  // - the function must always return a Promise.
  // Both are a "convention over configuration" kind of thing.

  async divide({ dividend, divisor }: { dividend: number, divisor: number }) {
    return { quotient: dividend / divisor }
  }

}

export default createH3Handler(new MyServer({
  authRequired: true,
  ownToken: process.env.API_TOKEN, 
  // Note that authorization is required by default, so you need to set `authRequired` to `false` if you don't want it.
}))
// On the client side:
import { createClient } from 'apryl'
import { MyServer } from '~/server/api/[...]'

const api = createClient(MyServer, {
  authToken: /* some token you store locally */,
})

// Call the API functions:
api.hello({ name: 'World' }).then(console.log)
// Expected output: { message: 'Hello, World!' }

api.divide({ dividend: 10, divisor: 2 }).then(console.log)
// Expected output: { quotient: 5 }

Readme

Keywords

none

Package Sidebar

Install

npm i apryl

Weekly Downloads

0

Version

0.1.5

License

MIT

Unpacked Size

12.9 kB

Total Files

19

Last publish

Collaborators

  • vzakharov