UNPKG

tsunamy

Version:

A new typesript framework

105 lines (80 loc) 2.89 kB
[![npm version](https://badge.fury.io/js/tsunamy.svg)](//npmjs.com/package/tsunamy) # Tsunamy framework a node.ts framework, Alpha version. Make easy to build a REST API server and serve a SPA ## Quick Start go to [link](https://github.com/apokalupsis/tsunamyExemple) and download the project. Write your new routes in `src/api/app.controller.ts`, run `npm run start`, it will reload automatically on file change. ## Features project architecture ``` src |-api (contain module, controller and service) |-config (contain the server config files) |-public (contain all the public files) main.ts (bootsrap the module) ``` if the request starts with `/api` the app checks the routes in the controller, otherwise, the app serves the static files on the public folder. supports methods: `GET`, `POST`, `PUT` and `DELETE` with parameters in the route, query or body. Example: GET `api/custom/url/route/4?queryvar=blabla` in the controller ```typescript @RequestMapping({ path:"/custom/url/route/{id}", method: 'GET'}) customFunction(@PathParam('id') id: number, @QueryParam('queryvar', {notNull: true}) queryvar: string) { return queryvar + id; } ``` Function can have this parameters : @PathParam('name') @QueryParam('name') @Body() @Response() Options can be passed to @QueryParam. ## Guards You can use Guards annotation for do some process fefore the fonction (exemple secure route). ```typescript function isAdmin(request){ return true; } @RequestMapping({ path:"/custom/url/route/{id}", method: 'GET'}) @Guards(isAdmin) customFunction(@PathParam('id') id: number, @QueryParam('queryvar') queryvar: string) { return queryvar + id; } ``` ## Response You can change the response manually, in the nodejs way. ```typescript @RequestMapping({ path:"/custom/url/route/{id}", method: 'GET'}) customFunction(@Response() res: any) { res.setHeader('test', 'testValue') return ''; } ``` ## ResponseEntity This type is used to http response (http code + body). It's a class with generic body's type. ```typescript function getById(id: number){ return new Object(); } @RequestMapping({ path:"/custom/url/route/{id}", method: 'GET'}) customFunction(@PathParam('id') id: number): Promise<ResponseEntity<Object>> { return new ResponseEntity<>(HttpStatus.OK, getById(id)); } ``` ## Log You can log message in console and/or in file. There are 3 levels: INFO, WARN and ERROR When we log with ERROR level the stack is added to the message. ```typescript try { Log.Info('My message with INFO level'); throw new Error() } catch (e) { Log.Err('My message with ERROR level'); } ``` ## https change to https : true in the CONFIGURATION file and add the two file to your projet `/certificate/key.pem` `/certificate/certificate.pem` be careful this files are ignored by git (not commit) Project link [here](https://github.com/apokalupsis/tsunamy) ## more feature soon