⌨️/Node.js

[Node.js] express, module, router, req/res, api 정리

S0 2024. 1. 26. 17:57

 

~오늘의 수강 과목~

1. Node.js 입문 1주차 (이용우 튜터님)

_ express, module, router, req / res, api

 

2. Node.js 입문 2주차 (이용우 튜터님)

_ MongoDB, schema, middleware

 

 


Express

Node.js 코드를 쉽게 짤 수 있게 도와주는 라이브러리

터미널로 yarn add express를 실행하면 package.json 파일에 express 설치가 기록되고, node_modules 폴더가 생성되는데 여기에는 라이브러리에 필요한 파일들이 담겨있다.

 

 


Module

자바스크립트를 파일 단위로 분리한 코드의 덩어리

a.js 파일에서 짠 코드를 b.js 파일에서도 사용할 수 있게 해준다.

코드를 재사용할 수 있기 때문에 구조적인 관리가 용이

 

CJS(CommonJS)

Node.js 환경에서 기본적으로 사용되는 모듈

require 함수로 불러올 수 있음

require 함수의 코드 위치는 상관없음

 

ESM(ECMA Script Module)

Node.js 뿐 아니라 모든 자바스크립트 환경에서 통일되게 사용할 수 있도록 제공

package.json 파일에 “type”: “module” 을 추가하면 사용 가능

(= CJS가 아닌 ES6 모듈을 쓰겠다고 선언하는 것과 같음)

import로 불러오고 export로 내보낼 수 있음

import문은 코드의 최상단에 위치해야함

 

 


Router

routing이란?

클라이언트에게 응답(response)하는 방식

 

Router란?

express 라이브러리에 내장된 기본 성능

클라이언트의 요청을 쉽게 처리할 수 있도록 도와줌

 

기본 문법

router.method(path, handler);

import express from ‘express’;
const router = express.Router();

router.get(‘/products’, (req, res) => { // get 메서드로 /products url에 도착했을때 오른쪽에 있는 핸들러를 실행시켜라
	res.json(‘어쩌고저쩌고’);
})

export default router;

/products 주소에서 get 메서드로 요청이 들어오면 오른쪽 함수를 실행할거고

이 함수는 최종적으로 json 형태로 반환

 

 


API

api는 정보 자체보다는 정보를 주고 받는 방법에 가까움

어떻게 요청할지? <-> 어떤 형식으로 받을지?

 

REST API의 구성

1. 자원(리소스) - url

/products 혹은 /cart 등

 

2. 행위 - http 메서드

GET, POST, PUT, PATCH, DELETE

CRUD

 

3. 표현

json, xml

 

API 클라이언트란?

API 요청 확인 혹은 테스트에 도움을 주는 툴

저번 개인 프로젝트에서는 insomnia 를 사용했으며, vscode 익스텐션인 thunder client 도 추천받았는데 이건 매번 넘겨보며 확인할 필요 없이 vscode 내에서 사용이 가능하다고 한다.

GET 메서드는 브라우저에서도 확인이 가능하지만, 그 외 작업은 API 클라이언트를 사용해야 주고받는 데이터를 눈으로 확인할 수 있어 편리하다.

 

 


요청 request / 응답 response

request

클라이언트 -> 서버로 요청

 

response

서버 -> 클라이언트로 응답

 

자주 사용되는 객체

req.body()

req.params()

req.query()

(req 객체 부분만 유일하게 이해를 아직 못해서 좀 더 공부 후 따로 글을 빼서 정리해봐야겠다)

 

res.status(코드) : 클라이언트에게 201, 404 등의 http 상태코드를 지정해줌

res.status(200);

 

res.send(데이터) : 클라이언트에게 특정 데이터(문자열, 객체 등)를 포함하여 응답 전달

res.send('피곤하다');

 

res.json(json) : 클라이언트에게 json 형식(=객체형)으로 응답 전달

res.json({ message: ‘피곤해’ });

 

 


오늘의 메모

  • 과제 시작 전에 강의를 들었을 때는 어렵다고 느껴졌는데, 개인과제 후 복습을 위해 다시 들어보니 이제 슬슬 구조가 잡히는 것 같다.
    얼른 정리해서 블로그에 올린다.
  • 처음에 어렵다고 느꼈던 이유는 지금 배우는 기능들이 각각 어떤 목적을 가지고 있고 어떻게 유기적으로 이어져있는지 보이지 않아서였다.
    그래서 이번 복습 때는 각 기능의 목적을 확실히 정리해두는 것으로 진행했다.

 

내일의 목표

  1. 노드 숙련 강의 주말까지 1주차 끝내기
  2. 노드 기초 2주차 복습 글도 올리기

 

앞으로의 목표

  1. 월요일에 다가올 개인과제를 기다리며 심호흡하기🥺
  2. 1번에서 이어지는 목표인데 이번 과제는 제시간에! 완성해서! 내는 것이 목표이다
    (첫번째 과제는 완성을 못했고 두번째 과제는 완성은 했으나 2차 시간이 지나서 제출했기 때문에 점점더 발전시킨다는 느낌으로..)
  3. 이거 전부 체크하기!