[TIL] 엘리스 SW 엔지니어 트랙 Day 030
글 작성자: 망고좋아
반응형
📖 오늘 배운 내용 - 2021.12.03
- Middleware
- REST API
- JSON
- MVC 패턴
- Postman 사용하기
- exports와 module.exports의 차이
- Router 사용하기
- 미들웨어 body-parser 사용하기
📝 Middleware란?
📝 REST API
📝 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 왜 이렇게 복잡한지 모르겠다. 주말에 영상 다시 보면서 익숙해보자!!!
📌 참고
반응형
'프로그래밍 > Today I Learned' 카테고리의 다른 글
[TIL] 엘리스 SW 엔지니어 트랙 Day 032 (0) | 2021.12.08 |
---|---|
[TIL] 엘리스 SW 엔지니어 트랙 Day 031 (0) | 2021.12.07 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 029 (0) | 2021.12.07 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 028 (0) | 2021.12.02 |
[TIL] 엘리스 SW 엔지니어 트랙 Day 027 (0) | 2021.11.30 |
댓글
이 글 공유하기
다른 글
-
[TIL] 엘리스 SW 엔지니어 트랙 Day 032
[TIL] 엘리스 SW 엔지니어 트랙 Day 032
2021.12.08 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 031
[TIL] 엘리스 SW 엔지니어 트랙 Day 031
2021.12.07 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 029
[TIL] 엘리스 SW 엔지니어 트랙 Day 029
2021.12.07 -
[TIL] 엘리스 SW 엔지니어 트랙 Day 028
[TIL] 엘리스 SW 엔지니어 트랙 Day 028
2021.12.02