TIL 22일차: 모듈 Module, CommonJS, Express Module(req, res), REST API로 데이터 조회, MongoDB와 mongoose
오늘은 하루종일 강의만 들었는데도 결국 목표한 바를 끝내지 못했다.
아쉬움이 남지만 내일도 시간이 있으니 남은 강의 6개 잘 듣길!
1. 모듈 Module
모듈이란 자바스크립트 파일 단위로 분리된 코드이다.
보통 파일 한 개에 모듈이 한 개이다.
그리고 한 모듈에서 다른 모듈을 호출해서 사용할 수도 있다.
모듈의 쓰임
모듈을 쓰면 코드를 구조적으로 관리할 수 있다.
코드를 재사용할 수 있다.(모듈화)
모듈의 인터페이스 Interface만 노출시킬 수 있다.
즉, 인터페이스 외의 정보를 숨길 수 있다. (정보은닉 Information hiding)
CommonJS
CommonJS는 브라우저가 아닌 환경에서 모듈을 사용할 수 있도록 고안되었으며 require 함수와 함께 쓰인다.
require는 경로나 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오고 종속성을 처리할 수 있다.
그렇다면 모듈을 어떻게 사용하느냐!
우선 exports 명령어를 변수나 함수 앞에 붙여서
외부 모듈에서 해당 변수나 함수에 접근할 수 있게 한다.
해당 외부 모듈에서는 import와 require를 써서 기능을 가져온다.
3. Request와 Response
Node.js의 서버 모듈에는 http 모듈과 Express 모듈이 있는데,
우리는 이번 시간에 Express 모듈에 대해 배웠다.
Express 모듈에는 Request(req)와 Response(res) 객체가 있다.
req 객체에 기억해야 하는 것들에는 req.body, req.params, req.query가 있다.
res 객체에는 res.status, res.send, res.json이 있다.
4. API의 역할
API는 애플리케이션끼리 연결해주는 매개체이자 약속이다.
또한 프론트엔드에서 원하는 기능을 수행하는 URL과 인터페이스를 제공하기도 한다.
REST API는 www와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍쳐이다.
자원(URL), 행위(Method: CRUD), 그리고 표현으로 구성된다.
REST API를 통하여 상품 목록을 조회하고 상품 상세를 조회하는 API를 만드는 실습을 했다.
5. MongoDB와 mongoose
일단 데이터베이스부터 잡고 가자.
DBMS(DataBase Management System)으로, DBMS가 설치된 서버 컴퓨터가 바로 DB서버이다.
DB의 종류는 관계형 DB (RDB)와 비관계형 DB (NoSQL)이 있다.
몽고디비는 NoSQL이다. 그리고 모든 데이터가 JSON 형태로 저장된다.
여기서 잠깐, 웹서버와 DB서버의 차이는
웹 서버가 DB 서버를 이용하는 DB 클라이언트가 될 수 있다는 점이다.
우리는 몽고디비 클라이언트인 Studio 3T를 다운로드받아 이용하였다.
코드에서 몽고디비를 이용하기 위해서는 디비 클라이언트 역할을 하는 무언가가 있어야 한다.
이 무언가가 바로 몽구스 mongoose이다.
몽구스에서 새로 나오는 개념들 - 문서 Document, Collection, Schema, Model.
웹서버에서 몽고디비 연결하는 실습으로 상품 생성 API (Method: POST)를 만들었다.
정보값을 body라는 이름으로 넘겨주고,
body로 전달받은 JSON 데이터를 바로 사용할 수 없으므로 미들웨어를 사용해야 한다는 특징이 있다.
이때 미들웨어는 app.use(...) 보다 위에 작성되어야 한다는 점에 유의한다.
그 밖에 장바구니 구현 실습에서 데이터 조회(get), 추가(post), 제거(delete), 수정(put, patch)을 했다.