Rest API Express Server
A simple and powerful library for building RESTful APIs using Express.js, designed to streamline the development process and provide a structure similar to Spring/Quarkus in Java. This library is built with TypeScript, offering type safety and improved developer experience.
Features
- Easy Setup: Quickly create RESTful APIs with minimal configuration.
- TypeScript Support: Enjoy the benefits of static typing and enhanced code quality.
- Modular Design: Organize your endpoints into classes for better maintainability as REST Controllers.
- Middleware Integration: You can still access Express.js instance for middleware configuration. Be it for authentication, logging, and more.
- Error Handling: Built-in error handling to simplify debugging and improve API reliability.
- Similar to Spring/Quarkus: Designed to provide a familiar structure for Java developers transitioning to Node.js.
Quickstart
First you need a server and then you need a RestController to register itself on it. Then you can start configuring your endpoints!
class TestRest extends RestController {
constructor(server: RestAPIServer) {
super(server, [
new RestEndpoint(HTTPMethodEnum.GET, '/', (req) => this.helloWorld1(req), [], ['test']),
new RestEndpoint(HTTPMethodEnum.GET, '/:id', (req) => this.helloWorld2(req), ['id'], []),
new RestEndpoint(HTTPMethodEnum.GET, '/:id/hello', (req) => this.helloWorld3(req), ['id'], [])
]);
}
public helloWorld1(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
return new HTTPSimpleResponse(`Hello World! test: ${req.getQueryParam('test')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
}
public helloWorld2(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
return new HTTPSimpleResponse(`Hello World! id: ${req.getPathParam('id')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
}
public helloWorld3(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
return new HTTPSimpleResponse(`Hello World! id: ${req.getPathParam('id')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
}
}
let server: RestAPIServer = new RestAPIServer(8080);
let testRest: TestRest = new TestRest(server);
server.serve();