TIL 23-06-12

level·2023년 6월 12일

TIL

목록 보기
25/95

express.js란?
노드의 프레임워크 (최근 각광받는것으로 nest.js도 있음)

npm init -y // package.json 생성
npm i express // i == install

package.json: express 관련된 내용이 들어있음
package-lock.json: 패키지들이 어떤 버전으로 설치되었는지 기록해놓은 파일
node_modules: npm을 통해 설치된 패키지들에 대한 파일이 있는 폴더. 사용하는 라이브러리들에 대한 모든 파일들이 설치됨

서버 실행 명령어

node app.js

API 클라이언트란?
개발단계에서 우리가 작성한 API의 요청을 확인하거나 테스팅 할 때 도움을 주는 툴. (이번 프로젝트에서는 Thunder Client 사용)

라우팅이란?
클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식

라우터란?
클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js 기본 기능중 하나

라우터의 기본 구조

router.METHOD(PATH, HANDLER);

엔드포인트란?
커뮤니케이션 채널의 한 쪽 끝. 한마디로 서비스를 이용할 때 사용하는 커뮤니케이션 채널의 한쪽 끝에 해당하는 URI. 서비스를 사용 가능하도록 하는 서비스에서 제공하는 커뮤니케이션 채널의 한쪽 끝. 즉 요청을 받아 응답을 제공하는 서비스를 사용할 수 있는 지점
[출처] API 와 Endpoint ? (둘 다 정확히 알고 있다면 안 봐도 되는 글)|작성자 토찌

미들웨어란?
웹 서버에서 요청을 받을때 가끔 모든 요청에 대해 공통적인 처리를 하고싶은 경우, 미들웨어를 이용하여 웹 서버의 요청/응답에 대해 공통적으로 관리가 가능

모듈이란?
Javascript 파일 단위로 분리된 코드. 모듈(Module)은 하나의 모듈에서 다른 모듈을 호출하여 사용할 수 있다. 그 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용할 수 있다. 보통 1개의 파일이 1개의 모듈이 된다.

필요성
코드 베이스를 분리할 수 있으며, 이를 통해 코드를 구조적으로 관리할 수 있다.
코드를 재사용 가능하게 만들어줌 (==모듈화)
모듈의 인터페이스(Interface)만 노출 시킬 수 있다. 즉, 인터페이스 이외에는 모든 정보를 은닉하는 정보은닉(information hiding)

CommonJS(CJS)
브라우저 이외의 환경에서 모듈을 사용할 수 있도록 고안된 명세. 설정을 따로 추가하지 않은 이상, Node.js에서는 CommonJS를 기본으로 사용.require함수는 경로 혹은 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오고 종속성을 처리

모듈 사용법
export : 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근 가능
require : 외부 모듈의 기능을 가져옴 (ES6에서는 import)

Request/Response?
Request: 클라이언트가 서버에게 전달하려는 정보나 메시지를 담는 객체
Response: 서버에서 클라이언트로 응답 메시지를 전송시켜주는 객체

Express 모듈의 req, res 객체
req 객체
req.body: Request를 호출할 때 body로 전달된 정보가 담긴 객체
req.params: 라우터 매개 변수에 대한 정보가 담긴 객체
req.query: Request를 호출할 때 쿼리 스트링으로 전달된 정보가 담긴 객체

res 객체
res.status(코드) : Response에 HTTP 상태 코드를 지정
res.send(데이터) : 데이터를 포함하여 Response를 전달
res.json(JSON) : JSON 형식으로 Response를 전달

REST API
URL, Headers, Method 등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의
“REST 아키텍쳐”라는 규칙을 따르는 API
구성
자원(Resource) - URL
행위 - HTTP method
표현

MongoDB 접속 문제 해결
mongodb 6버전에서 mongodb를 접속하기 위해서는 mongosh이라는 프로그램을 따로 설치해서 mongodb에 접속해야한다
내가 설치한 버전은 6.0.6이었기 때문에 mongosh를 설치해 http://localhost:27017/ 포트에 연결해주었다

0개의 댓글