-
6, 7주차 - Restful API와 node.js 프레임워크로 api 만들기활동/UMC 2기 2022. 5. 10. 18:39
6, 7주차의 목표는 Restful API와 node.js 프레임워크를 이용해서 인스타밀리그램에서 사용할 api의 매우 일부분을 만들어 보는 것이다.
민감한 정보가 많아 이번엔 영상대신 사진으로 설명과 함께 정리해봤다.
해당 활동에서 사용한 서버 api 템플릿은 컴공선배 라이징캠프에서 제공되었기에 코드 전문은 공개할 수 없는 점 참고 바랍니다.
수업 듣기(Udemy): https://www.udemy.com/course/comgongbro_server_clonecoding/ (광고 아님)
우선 데이터베이스에 연결해준다. 필요한 정보는 host, user, password, database 인데 각각 주석친 부분에 해당하는 내용을 복사하여 넣어주면 된다.
그 다음 GitHub에 올려준 뒤 ec2서버에 클론해준다.
문제는 로그인이 안될 수 있다는건데 깃헙의 정책 변경으로 인해 비밀번호 대신 personal token을 이용해서 로그인을 해야 한다.
토큰을 발급받은 뒤 저장하고 그 토큰으로 비밀번호 대신 입력하면 잘 클론된다.
ec2에도 npm(js 설치 관리자 패키지)을 설치해준다. (sudo apt install npm)
npm i 명령어로 필요한 node.js 관련 패키지를 설치한다.
그리고 sudo node index.js를 실행했을 때 서버가 잘 시작되면 세팅은 성공!
...근데 안됬다. 당연한 얘기지만 ec2의 인바운드 규칙에 3000번 포트를 열어주지 않았기 때문이다.
인바운드 규칙에 사용자 지정 유형으로 포트 3000번을 허용해준다.
정상적으로 출력이 된다!
이제 보안접속과 도메인 사용을 위해 reverse proxy를 설정해주면 된다.
그 후 테스트(sudo nginx -t)하고 재시작(sudo service nginx restart)을 잊지 말도록 하자!
근데 또 안된다..! 왜인가 했더니 터미털에 명령어를 치기 위해 ^C 입력했다가 서버가 종료되었기 때문이다.
다음에 바로 할 거긴 하지만 무 중단 서버를 설정하기 이전에는 콘솔창을 별로도 띄워서 하나는 서버 구동, 하나는 커멘드 입력으로 쓰도록 하자;; ㅎㅎ
이제 SSL 보안과 도메인으로 api가 실행이 된다!
이제 무 중단 서버를 설정하기 위해 npm 으로 pm2를 설치해주자
한 번에 되면 섭하지.. 또 안된다 ㅋㅋ
이건 또 왜그런가 했더니 npm 패키지들 사이에 버전 차이가 있을 때 생길 수 있는 오류라고 한다.
종속성 오류인 듯 하다.
sudo npm cache clean --force
sudo npm install -g n
sudo n stable
명령어를 차례로 실행하면 해결된다. (sudo npm cache clean --force 실행하는데 왜.. 눈치를 주는지..ㅜ (알고 하는건데..!!))
이렇게 pm2까지 설치하고~
(사진은 못 찍었지만...) sudo pm2 start index.js 명령어를 실행하면 무 중단 서비스를 개시할 수 있다!
여기까지가 실습 내용이었고, 이제 첼린지 과제로 유저 삭제 api를 구현하는 것이 남았다..!
일단 restful api와 명세서를 만들자
<Fig. 16-2>
<Fig. 16-3><Fig. 16-1>에서 users/:userIdx/status라 적었는데 의미상 delete가 더 맞을거 같아서 실제 개발은 users/:userIdx/delete로 구현헀다.
그리고 <Fig. 16-2>, <Fig. 16-3>의 명세서는 개발 끝나고 작성한 것이다.
유저 삭제는 status를 DELETED로 바꿔주는 작업이니 PATCH를 이용한다.
userRoute - userController - [userService, userProvider] - userDao - (DB) 순으로 데이터가 넘어가니 그 순서를 고려하여 개발하면... 덜..헷갈린다..!
값, 형식, 길이 등의 형식적 vaildation은 userController에서 처리했으니, 이제 DB에서 검증해야 할 의미적 validation은 [userService, userProvider]에서 처리하도록 구현하면 된다!
처리해야할 사항은 이미 삭제된 유저를 또 삭제하려는 경우이다.
로컬에서 테스트를 완료했다면 이제 ec2서버에 적용하면 된다.
깃헙으로 push 하고 ec2에서 pull하면 적용 끝!
(본인은 fetch 하고 merge 했지만..)
잘 삭제된다! (정확인 status가 DELETED로 바뀐다)
비록 주먹구구식으로 따라한거라 이해는 잘 안됬지만, 유저 삭제를 구현해보면서 코드가 어떻게 동작하는지 그 순서 정도는 이해할 수 있었다.
node.js에서 활용하는 메서드들은 이후 스터디를 통해 서로 배워가면 좋을 거 같다.
작성한 워크북은 여기에...
https://roan-calendula-b59.notion.site/6-Work-Book-165dc8b80f0b4d2b9fe7909f2690ba19
https://roan-calendula-b59.notion.site/7-Work-Book-8cb434596fb745cb8d41671e50c06cee
'활동 > UMC 2기' 카테고리의 다른 글
5주차 - 인스타밀리그램 DB 설계 및 홈 화면 쿼리 실습 (0) 2022.05.10 4주차 - AWS RDS 생성 및 SSH 접속 (0) 2022.04.06 3주차 - AWS 환경구축, 도메인 주소 할당 (0) 2022.04.06 2주차 - 포트포워딩, AWS 인스턴스 SSH 접속 (0) 2022.04.06 1주차 - Ubuntu APM 소스 수동설치 (0) 2022.04.06