컨트롤 모듈화
입력과 출력을 담당할 controller 폴더를 만들고 BoardController를 생성한다.
그리고, addBoard 라는 메서드를 만들고 board 를 생성하는 api를 구현한다.
typeORM은 DB를 객체처럼 다루기 때문에 굳이 controller에서 persistence 레이어로 나누지 않았다. Board 인스턴스를 생성하고 save를 하게 되면 ORM이 insert 구문을 만들어서 실행해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import {Board} from "../entity/Board"; import {getConnection} from "typeorm"; export class BoardController { static addBoard = async (req, res) => { const {title, content} = req.body; const board = new Board(); board.title = title; board.content = content; const result = await getConnection().getRepository(Board).save(board); res.send(result); } } |
라우팅 모듈화와 컨트롤러 모듈화
POST 방식의 /api/board API를 만들기 전에 /api 를 처리해줄 라우팅 부분을 먼저 모듈화 한다.
express의 Router를 이용하면 라우팅을 모듈화할 수 있다.
router폴더를 만들고 index.ts 화일을 만든다. post 방식에 /board 를 처리하도록 했다.
1 2 3 4 5 6 7 8 |
import {Router} from "express"; import {BoardController} from "../controller/BoardController"; const routes = Router(); routes.post('/board', BoardController.addBoard); export default routes; |
이제 /api를 처리해줄 부분은 src/index.ts에 추가한다.
1 2 3 4 5 6 7 8 9 |
... app.use('/api', router); createConnection().then(connection => { app.listen(8080, () => { console.log('server is listening 8080'); }); }); |
Test
postman으로 테스트한 결과는 다음과 같다.