// 내생각 / 색깔글씨 : 중요표시 등
공부한 내용 -
프로젝트 순서 :
github 레파지토리 만들기
2. 이슈에서 요구사항 보고 할일정리 및 조건 등 기입 ( - [ ] 기입시 체크박스 가능 / 오른쪽에 assignees 로 멤버 추가 가능)
예시 이슈 폴더:설계/개발준비/상품생성api구현/ 등등등 /에러처리 미들웨어 구현/api 호출 테스트/배포
; 만약 할일 다 했다면 close with comment 하면 완료된 문서로 넘어감
- github에서 브랜치 만들기 : github 페이지에서 오른쪽 하단 : Development -> create a branch 가서 작성
보통은 깃 나눌 때 프로그램 역할별로 나누므로 해당하는 깃 이슈 번호를 하면 보기편할 듯
예시) 카테고리/작업내용이슈 ; chore/개발-준비#2
만들고 나면 나오는 코드 그대로 복붙하면 됨
3. 깃 클론으로 파일 가져오기
4. vscode에서 세팅 먼저 하기 (env, gitignore, prettierrc, 자동저장, nodemon, yarn init -y)
- env : .env ; 따로 글 작성
- gitignore: https://www.toptal.com/developers/gitignore (= gitignore.io 들어가서 내가 쓰는 것을 적으면 그에 맞는 것을 알려주기 ex) macos, node, visualstudiocode, dotenv 하면 많이 사용하는 내용이 나오므로 복붙)
- prettierrc : command , 누르면 설정나옴 검색창에다 format on save : 저장할 때마다 자동적으로 프리티어에 의해 포매팅
(+ 프리티어와 상관없이 그외에 auto save : 커서를 옮길 때마다 저장 등의 설정이 나옴)
: 강의에서는 예시 복붙 했으니 프리티어 설정 찾아서 내 스타일대로 해주면 될듯
- yarn init -y : 하면 package.json 생기므로 타입모듈 작성 -> main 은 내가 생성한 메인에 해주기 (폴더/파일명)
-> scripts :{"start": "node src/app.js", "dev": "nodemon src/app.js"}
; 요 스크립트 친구들은 yarn start 로 node app.js를 대신하고
yarn dev 요거는 노드몬 실행
- yarn add express dotenv mongoose (dependencies)
express dotenv mongoose 이 친구는 뭐하는 친구인지 찾아보기
- yarn add -D prettier nodemon : 프리티어와 저장할 때마다 프로그램 재실행 (devDependencies)
; -d는 devDependencies 로 설치한다는 뜻인듯
과제 문제 및 나의 답
문제1. API 명세서 작성이유
: Api가 어떻게 동작하는지에 대한 설명서의 느낌으로 외부 개발자가 api를 쉽고 효과적으로 사용할 수 있으며, 에러를 빠르게 찾고 해결하는데 도움
문제2. 패키지 설치시 package.json 파일의 dependencies 와 devDependencies의 차이
: 프로젝트를 실행하는데 필요한 패키지와 개발과정에서 편리하게 해주는 도구에 관련된 패키지
문제3. MongoDB의 schema란? Model이란?
: 스키마는 데이터의 구조와 어떤 제약사항이(문자타입이나 꼭필요한지 등) 있는지 정의. 틀이라고 생각.
그 스키마를 기본으로 새로운 데이터베이스 안에 만든 형태 = 모델
문제4. 대표적 HTTP Method는 무엇이며 각각 언제 사용하는가
: Get 정보 얻을 때 : 조회 /post 등록 / patch 일부수정 / delete 삭제/ put 전체수정
문제5. 수정할 때 사용하는 HTTP Method중 PUT 과 Patch 차이
: 전체수정과 일부수정
문제6. 대표적 HTTP status code는 무엇이며 각각 언제 사용하는지
: 200 서버요청 성공적 처리 / 201 요청이 처리 되서 새로운 리소스 생성 /
400:클라이언트의 잘못된 요청 / 404 지정한 리소스 찾을 수 없음 / 500 서버 오류
문제7. API호출시 데이터 넘기는 방식 3가지, 각각 언제사용하는지
: 쿼리 스트링 파라미터-클라이언트가 어떤 특정 리소스에 접근하고 싶어하는지에 대한 정보를 담음
리퀘스트 바디-HTTP 요청의 본문(body)에 데이터를 포함시키는 방
패스 파라미터-경로를 변수로써 사용할 때
; 리퀘스트 헤더도 있지만 이번 과제에는 사용하지 않았음
문제8. API 설계 시 RESTful하게 설계한다는 것은 무엇인가요?
: 네트워크 표현 수단을 사람이 봐도 이해하기 쉽게
문제9. 비밀번호 저장 시 평문으로 저장하면 DB 유출 시 문제가 됩니다. 어떻게 저장해야 안전하게 저장할 수 있을까요?
: Env 에 바뀔수 있거나 개개인에 따라 다른 정보를 대체해서 넣어둠 .env는 gitignore에 넣으므로 타인이 확인할 수 없음
문제10. 미들웨어를 사용하는 이유와 에러 처리 이 외에 어떤 용도로 사용할 수 있을까요?
: 미들웨어는 서버의 요청-응답과정 중간에 위치하여 특정 기능을 수행. 애플리케이션 개발을 간소화,시간을 단축 / 바디파서- 사용자가 폼을 통해 전송한 데이터를 서버에서 쉽게 파싱하여 사용 ,
json - json이라는 규격의 바디데이터를 손쉽게 코드에서 사용,
url encoded : 이것도 바디데이터를 쉽게 코드에서 사용할 수 있게 해줌
+ CS 문제
- 비동기 프로그래밍과 동기 프로그래밍의 차이점을 설명해주세요. Node.js에서 비동기 프로그래밍 기법이 중요한 이유는 무엇인가요?
- 데이터 베이스 ACID에 대해 설명해주세요.
- node.js에서 이벤트 루프란 무엇이고 어떻게 동작하나요?
- 실행컨텍스트에 대해 알고있는대로 설명해주세요.
- 프로미스와 async/await의 개념과 사용 방법을 설명하고, 두 방식의 차이점을 비교해주세요
회고 - 과제코드작성하며 잘 못느꼇던 내용을 문제를 통해서 다시 한 번 찾아보고 짚어봄으로써 사용의 이유를 좀 더 알게되었음.