본문 바로가기

공부/타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)

백엔드 기초: Node.js + Express 기본(10)-node.js route().post().get()

Server와 Router의 역할

Server: Request를 받음

Router: Request의 URL에 따라 루트(route)를 정해줌

 

Node.js의 라우팅(Routing)이란?

Request(요청)이 날아왔을 때, 원하는 경로에 따라 적절한 방향으로 경로를 안내해주는 것.

 

URL, method => 호출 콜백함수

 

❄️여러개로 나눠놓은 파일을 모듈화하여 app.js로 require하기❗

🔸디렉토리구조

🔸파일상단 require

Router() 모듈을 가지고와서 app으로 된 부분을 router로 변경한다.

🔸파일하단 module 선언, 모듈화

🔸app.js

포트번호는 여기서 주고

각 파일을 require해 와서

app.use('/', require파일 변수명)

으로 각각 모듈화 한 파일을 불러준다.

app.use안에 URL 경로는 공통적인 부분을 따로 빼주는 것을 의미하는데,
그냥 '/'만 빼주어도 무방하지만, 공통적으로 사용되고있는 부분으로 적어주면
중복을 줄일 수 있어 좋은 방법이 된다.
공통적인 부분의 URL을 빼주게 된다면, channels의 파일에서 router에 적힌 URL을
use에 적힌 URL을 제외하고 '/'로 써줘도 문제없이 돌아간다.

 

간단하게 ERD 고려해보기

일단 회원과 채널을 나눠놓았지만 회원아이디당 채널을 100개를 생성할 수 있다고 했을 때,

채널에 user_id도 필요해보인다고 생각했었는데 오늘 강사님께서 연관되는 컬럼에 대해 설명하셨다.

회원   채널
id user_id password name   id channel_title user_id sub_num video_num
1 testId1 1234 tester1 1 hi testId1    
2 testId2 1234 tester2 2 run testId1    
        3 workout testId2    

 

채널API 설계(URL, http method/status, req/res) 수정

🔸생성과 조회에서 userId를 추가해주고, 채널전체조회를 userId를 가진 해당 회원의 채널전체조회로 변경한다.

  1. 채널생성=> POST/channels
    • req: body(channelTitle, userId)
    • res(201): `${channelTitle}님 채널을 응원합니다.` / / 메인페이지
  2. 채널개별수정 => PUT/channels/:id
    • req: URL(id), body(channelTitle)
    • res(200): `${channelTitle}님의 채널이 ${newChannelTitle}로 성공적으로 수정되었습니다.`  / / 생성된 채널 페이지
  3. 채널개별삭제 => DELETE/channels/:id
    • req: URL(id)
    • res(200): `${channelTitle}님 채널이 삭제되었습니다.` / / 메인페이지
  4. 해당 회원의 채널전체조회 => GET/channels
    • req: body(userId)
    • res(200): 채널 전체 데이터 list || json array
  5. 채널개별조회 => GET/channels/:id
    • req: URL(id)
    • res(200): 채널 개별 데이터

❄️1,4가 수정된 코드

생성에서는 channelTitle만 보내줬지만 userId도 같이 bodyData로 넣어서 push해줬다.

조회에서는 body의 userId를 받아서 userId가 undefined라면 early return하게 했다.

💢원래 프론트와 통신하기 위해서는 '조회할 채널이 없습니다.'와 같은 메세지를 보내는 것이 아니라,
length의 갯수를 보내는게 좋다고 한다.

 

회원API 설계 수정

  1. 로그인 => POST/login
    • req: body(userId, userPw)
    • res: `${name}님 환영합니다.` / / 메인페이지
  2. 회원가입 => POST/join
    • req: body( userId , userPw , name)
    • res: `${name}님 환영합니다.` / / 로그페이지
  3. 회원(개별)정보조회 => GET/users
    • req: body(userId) (URL로 받아오던 userId를 body로 받아오게 수정)
    • res: id, name
  4. 회원(개)탈퇴 => DELETE/users
    • req: body(userId) (URL로 받아오던 userId를 body로 받아오게 수정)
    • res: `${name}님 다음에 또 뵙겠습니다.` / / 메인페이지
💢원래 userId는 body가 아닌 header로 받는 것이 정석❗

 

❄️3,4가 수정된 코드

지금 순차적으로 올라가는 index로 검색하던 부분을 변경중인데,

나는 처음부터 userId로 검색하는 기능으로 구현해서 수정하는 부분이 별로 없었다.

req.params로 받아오던 데이터를 req.body로 가지고오는 것으로 변경해줬다.