글 작성자: 망고좋아
반응형

📖 오늘 배운 내용 - 2021.12.03

  • Middleware
  • REST API
  • JSON
  • MVC 패턴
  • Postman 사용하기
  • exports와 module.exports의 차이
  • Router 사용하기
  • 미들웨어 body-parser 사용하기

 

📝 Middleware란?

 

[Node.js] Node.js Middleware란?

🎯 Node.js Middleware란? 미들웨어는 Express.js 동작의 핵심이다. HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수이다. 📝 미들웨어 동작 원리 Express.js의 미들웨어는 HTTP 요청이 들어온 순

lakelouise.tistory.com

 

📝 REST API

 

[Node.js] Node.js REST API란?

🎯 Node.js REST API란? REST + API REST 아키텍처를 준수하는 웹 API RESTful API라고 부르기도 한다. 📝 API란 Application Programming Interface 서비스나 프로그램 간에 미리 정해진 기능을 실행할 수 있도..

lakelouise.tistory.com

 

📝 JSON

  • JavaScript Object Notation
  • 자바스크립트에서 객체를 표현하는 표현식으로 시작되었다.
  • 데이터를 표현하는 방법이 단순하고 이해하기 쉬워서 웹 API에서 데이터를 전송할 때 표현식으로 주로 사용됨
  • 웹 API는 기본적으로 데이터를 문자열로 전송하게 된다.
  • 어떤 객체를 웹 API를 통해서 문자열로 전달하기 위해 JSON을 사용한다.
  • JSON에서 Object는 { key: value }로 표현한다.
    • value에는 어떤 값이라도 사용될 수 있다 (문자열, 숫자, JSON 객체 등)
    • Ex) { name: 'elice', age: 5, nationality: 'korea' }
  • JSON에서 Array는 [item1, item2]로 표현한다.
    • item에는 어떤 값이라도 사용될 수 있다 (문자열, 숫자, JSON 객체 등)
    • Ex) ['first', 10, { name: 'bob' }]

 

📝 MVC 패턴

  • MVC 패턴은 웹 서비스의 가장 대표적인 프로젝트 구성 패턴으로 프로젝트의 기능들을 어떻게 분리할지에 대한 하나의 구성 방법이다.
  • Model - View - Controller를 구분하여 프로젝트 구조를 구성한다.

 

📕 Model

  • 데이터에 접근하는 기능 또는 데이터 그 자체를 의미
  • 데이터의 읽기, 쓰기는 Model을 통해서만 이루어지도록 구성

 

📕 View

  • 데이터를 표현하는 기능 주로 Controller에 의해 데이터를 전달받고 전달받은 데이터를 화면에 표시해 주는 기능을 담당

 

📕 Controller

  • Model을 통해 데이터에 접근하여, 처리 결과를 View로 전달하는 기능
  • 웹 서비스에선 주로 라우팅 함수가 해당 기능을 수행

 

📝 exports와 module.exports의 차이

📕 module.exports

module.exports = {
  area: function(width) {
    return width * width;
  },

  perimeter: function(width) {
    return 4 * width;
  }
};
  • module.exports는 require() 함수를 사용했을 때 반환받는 변수이며 비어 있는 객체가 기본값이며 어떤 것으로도 자유롭게 변경할 수 있다.
  • 일반적으로 가장 많이 사용되는 방법이다.

 

📕 exports

exports.area = function (width) { return width * width; };
exports.perimeter = function (width) { return 4 * width; };
var square = require('./square'); // Here we require() the name of the file without the (optional) .js file extension
console.log('The area of a square with a width of 4 is ' + square.area(4));
  • exports를 사용하면 모듈을 작성할 때 더 적은 양의 코드로 작성할 수 있으며 이 변수의 프로퍼티를 사용하는 방법도 안전하고 추천하는 방법이다.
  • 이 두 가지 방법의 가장 큰 차이는 exports를 사용할 때는 exports 객체에 프로퍼티를 추가하고, module.exports를 사용할 때는 module.exports 변수에 아예 새로운 객체를 할당하는 것이다.

 

📝 Router 사용하기

  • 라우팅은 클라이언트에서 보내는 주소에 따라 경로를 설정해 주는 것을 의미한다.
  • 보통 웹페이지에서 url에 따른 처리를 해주는 것
app.get('/', function (req, res) {
  res.send('root');
});

//-------------------------------------
const express = require('express');

const app = express();
const userRouter = require("./routes/users")

app.get('/', (req, res) => {
    res.send("OK");
});

/* 라우터를 '/users' 경로에 연결 */
app.use("/users", userRouter)

app.listen(8080);

 

📝 미들웨어 body-parser 사용하기

npm install body-parser
  • 미들웨어 중 하나인 body-parser를 사용하면 여러 가지 발생 가능한 문제들을 방지하고 요청의 본문(body)을 지정한 형태로 parsing 해준다.
  • Express 프레임워크는 요청을 처리할 때 기본적으로 body를 undefined로 처리하고 있기 때문에 아래 코드처럼 req.body를 콘솔에 출력하면 undefined가 출력된다.
app.get('/test', (req, res) => {
    res.send('test');
    console.log(req.body); // undefined
});
  • body-parser 미들웨어를 사용하면 request의 body 부분을 json 형태로 파싱하여 활용할 수 있다.
//body-parser 모듈 불러오기
const bodyParser = require('body-parser');

app.use(bodyParser.json());    //요청 본문을 json 형태로 파싱
app.use(bodyParser.urlencoded({extended: false}));  //

 

💡 오늘 깨달은 것

  • Node.js는 처음 공부하다 보니 구조가 커지는 순간 어렵게 느껴진다.
  • CRUD 왜 이렇게 복잡한지 모르겠다. 주말에 영상 다시 보면서 익숙해보자!!!

 

📌 참고

반응형