0.1.5 • Published 2 years ago

apryl v0.1.5

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

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 }
0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago