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"
|
2021-09-14 10:51:24 +07:00
|
|
|
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,
|
|
|
|
})
|
|
|
|
}
|
2021-09-14 10:51:24 +07:00
|
|
|
|
|
|
|
@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>
|