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를 가진 해당 회원의 채널전체조회로 변경한다.
- 채널생성=> POST/channels
- req: body(channelTitle, userId)
- res(201): `${channelTitle}님 채널을 응원합니다.` / / 메인페이지
- 채널개별수정 => PUT/channels/:id
- req: URL(id), body(channelTitle)
- res(200): `${channelTitle}님의 채널이 ${newChannelTitle}로 성공적으로 수정되었습니다.` / / 생성된 채널 페이지
- 채널개별삭제 => DELETE/channels/:id
- req: URL(id)
- res(200): `${channelTitle}님 채널이 삭제되었습니다.` / / 메인페이지
- 해당 회원의 채널전체조회 => GET/channels
- req: body(userId)
- res(200): 채널 전체 데이터 list || json array
- 채널개별조회 => GET/channels/:id
- req: URL(id)
- res(200): 채널 개별 데이터
❄️1,4가 수정된 코드
생성에서는 channelTitle만 보내줬지만 userId도 같이 bodyData로 넣어서 push해줬다.
조회에서는 body의 userId를 받아서 userId가 undefined라면 early return하게 했다.
💢원래 프론트와 통신하기 위해서는 '조회할 채널이 없습니다.'와 같은 메세지를 보내는 것이 아니라, length의 갯수를 보내는게 좋다고 한다. |
회원API 설계 수정
- 로그인 => POST/login
- req: body(userId, userPw)
- res: `${name}님 환영합니다.` / / 메인페이지
- 회원가입 => POST/join
- req: body( userId , userPw , name)
- res: `${name}님 환영합니다.` / / 로그페이지
- 회원(개별)정보조회 => GET/users
- req: body(userId) (URL로 받아오던 userId를 body로 받아오게 수정)
- res: id, name
- 회원(개)탈퇴 => DELETE/users
- req: body(userId) (URL로 받아오던 userId를 body로 받아오게 수정)
- res: `${name}님 다음에 또 뵙겠습니다.` / / 메인페이지
💢원래 userId는 body가 아닌 header로 받는 것이 정석❗ |
❄️3,4가 수정된 코드
지금 순차적으로 올라가는 index로 검색하던 부분을 변경중인데,
나는 처음부터 userId로 검색하는 기능으로 구현해서 수정하는 부분이 별로 없었다.
req.params로 받아오던 데이터를 req.body로 가지고오는 것으로 변경해줬다.
'공부 > 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js)' 카테고리의 다른 글
백엔드 심화: 인증과 비동기처리(2)-db create table{}, LEFT JOIN __ ON __ (0) | 2024.09.12 |
---|---|
백엔드 심화: 인증과 비동기처리(1)-데이터베이스란(DB) (0) | 2024.09.11 |
백엔드 기초: Node.js + Express 기본(9)-빈 객체 확인, 채널 설계 (0) | 2024.09.09 |
백엔드 기초: Node.js + Express 기본(8)-HTTP status, 유튜브데모 users 설계 (5) | 2024.09.07 |
백엔드 기초: Node.js + Express 기본(7)-method (DELETE), 리펙토링, HTTP status (6) | 2024.09.05 |