用 Typescript 写类 Servlet 路由

1,221 阅读1分钟
原文链接: github.com

Installation

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

Introduction

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

More documentations will be added soon, for immediate access to all features, please refer to the declaration file.

Example

@Path('/')
class TestController {

    @GET
    @Path('/')
    async index() {
        return new Response()
            .status(200)
            .set('Content-Type', 'application/json')
            .entity(JSON.stringify({
                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