express-nodejs-app/README.md

97 lines
1.8 KiB
Markdown
Raw Normal View History

2021-09-13 17:31:39 +07:00
# Express Nodejs App
2021-09-13 20:28:43 +07:00
- Nodejs
- Express
- TypeScript
- Prettier
- ESLint
- Docker
- DroneCI
- Lerna Support
2021-09-14 09:50:25 +07:00
- Support decorators
2021-09-13 20:28:43 +07:00
# Quickstart
- Start
2021-09-13 20:25:18 +07:00
```shell
yarn start
```
2021-09-13 20:28:43 +07:00
- Navigate
2021-09-13 20:25:18 +07:00
```shell
2021-09-14 09:50:25 +07:00
curl http://localhost:3000/info
2021-09-13 20:25:18 +07:00
```
2021-09-13 20:28:43 +07:00
- Response
2021-09-13 20:25:18 +07:00
```json
{
"startedAt": "2021-09-13T13:21:04.184Z",
"message": "Instance id: presenter#143470",
"status": "OK"
}
```
2021-09-13 20:28:43 +07:00
2021-09-14 09:50:25 +07:00
# Quick Register Controller
- Add new controller `src/controller/home.controller.ts`
```typescript
import { Request, Response } from "express"
import Controller from "../decorators/controller.decorator"
import { Get, Post, Delete } from "../decorators/handlers.decorator"
2021-09-14 09:50:25 +07:00
const data: any[] = []
@Controller("/home")
export default class HomeController {
constructor() {}
@Get()
public get(req: Request, res: Response) {
res.json(data)
}
@Post()
public create(req: Request, res: Response) {
const body = req.body
if (body == null) {
return res.status(400).json({
status: 400,
message: "Data is required",
})
}
data.push(body)
res.json({
message: "Data created successfully",
body: body,
})
}
@Delete("/:id")
public get(req: Request, res: Response) {
const id = req.params.id
res.json({
id: id,
})
}
2021-09-14 09:50:25 +07:00
}
```
- Register controller into index.ts `(src/controllers/index.ts)`
```ts
import IndexController from "./index.controller"
import PersonController from "./person.controller"
import HomeController from "./home.controller"
export const controllers = [IndexController, PersonController, HomeController]
```
2021-09-13 17:31:39 +07:00
### Contributors
2021-09-13 20:28:43 +07:00
- Sambo Chea <sombochea@cubetiqs.com>