Skip to content
/ vader Public
forked from t2ee/vader

Koa Router in Typescript, Servlet-Like API

Notifications You must be signed in to change notification settings

danibram/vader

 
 

Repository files navigation

Node version NPM version build status Test coverage

Installation

$ npm install koa@next @types/koa @t2ee/vader --save

Introduction

This is the core component of t2ee, the routing service.

Caution

Bring your own 'reflect-metadata'

Example

import 'reflect-metadata';

@Path('/')
class TestController {

    @GET
    @Produce(MediaType.JSON)
    @Path('/')
    async index() {
        return new Response()
            .status(200)
            .entity({
                message: 'hello world',
            })
            .build();
    }
}
const app = new Koa();
const router = new Router();
router.use(TestController);
app.use(router.routes());
app.listen(8080);

##API

Router

provide(providerName: string, fn: (parameter: IParameter, context: VaderContext) => Promise);

provide custom annotations that can be managed by vader.

use(controller: Class)

register a controller to router

routes()

return a middleware function to be used in Koa.

Response

entity(body: any)

set content

status(status: number)

set status

set(key: string, value: string)

set header

build()

build response before return

VaderContext

  • headers
  • params
  • query
  • body
  • http: Koa.Context
  • [key: string]: any // used to store any intermediate state.

@BodyParam(key?: string)

used to get body of item of specified key

@HeaderParam(key?: string)

used to get header of item of specified key

@PathParam(key?: string)

used to get path variables of item of specified key

@QueryParam(key?: string)

used to get query of item of specified key

@Consume(type: MediaType)

set reqeust body content type

@Produce(type: MediaType)

set response body content type

@DELETE

@GET

@POST

@PUT

@HEAD

@OPTIONS

@Method(method: string)

set reqeust method

@Context

get current VaderContext

@Use(func: (context: VaderContext, next: () => Promise) => Promise)

plug in custom middleware

Charset

charset enums

HttpMethod

http method enums

MediaType

content type enums

Status

http status enums

Contributing

PRs and Issues are welcome

About

Koa Router in Typescript, Servlet-Like API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.3%
  • JavaScript 1.7%