node.js를 이용하는 사람들의 커뮤니티가 성장하면서, node.js의 불편한 점을 인지하고 그걸 개선하고자 프레임워크의 개발이 시작되엇다.
대표적으로 Express, NestJS, Fastify가 있다.
참고: 2024 Developer Survey
Node.js가 Chrome의 V8엔진을 이용하여 서버를 만들었다면, Express는 이런 Node.js의 원칙과 방법을 이용하여 웹 애플리케이션을 만들기 위한 프레임워크이다.
Express 홈페이지에 가면
Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크로 웹 애플리케이션, API, 선능등을 지원해준다고 적혀있다.
- 웹 애플리케이션
Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다.- API
자유롭게 활용할 수 있는 수많은 HTTP 유틸리티 메소드 및 미들웨어를 통해 쉽고 빠르게 강력한 API를 작성할 수 있다.- 성능
Express는 기본적인 웹 애플리케이션 기능으로 구성된 얇은 계층을 제공하여, 사용자가 선호하는 Node.js 기능을 직관적으로 만들었다.
설치방법은 node.js가 설치되어 있다면 npm이 설치되기에 터미널에 다음과 같이 입력하면 된다.
npm i express
require를 통해 express를 불러오면 다음과 같이 HTTP 메서드를 이용해 API를 만들 수 있다.
const express = require('express')
const app = express()
// GET method
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(1234);
Express에서는 이전 포스트에서 배운 GET, POST, PUT/PATCH, DELETE 외에도 OPTIONS, HEAD, ALL이 있다.
OPTIONS와 HEAD는 있는 HTTP 메서드 인데 ALL은 아니다.
OPTIONS와HEAD그리고ALL
해당 메서드들은 어떤 경우에 사용될까?
OPTIONS: 클라이언트가 서버에 어떤 HTTP 메서드를 사용할 수 있는지 확인하기 위해 사용됨, 특히 CORS사전 요청에서 필수적으로 사용함HEAD: 클라이언트가 데이터 크기, API 상태 코드, 메타데이터만 확인하고 본문은 필요업을때 사용함ALL: Express에서 제공하는 라우트 핸들러일 뿐, HTTP메서드는 아님, 모든 HTTP 요청을 처리하하며, 보통 미들웨어처럼 사용되거나, 모든 요청을 로깅할 때 유용함
우리 세상은 객체로 이루어져 있다.
주어 자리에 왔을 때 문장이 만들어지는건 다 객체라고 할 수 있다.
ex) 물건, 사람이름, 붕어빵 등등
여기서는 서버가 클라이언트에게 데이터를 보낼때 하나의 정보를 클라이언트에게 보냈었던걸 객체를 사용하면 데이터 묶음으로 보낼 수 있게 된다.
//ex. 상품명: Node.js를 공부해보자
// 상품가격 : 20000
// 삼풍소개: 이 책 좋음 왜? 강사님이 지음
// ===>
{
상품명: "Node.js를 공부해보자",
가격: 20000,
삼품소개: "이책 좋음 왜? 강사님이 지음"
}
JaavaScript Object Notation의 약자로 자바스크립트 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 데이터의 교환과 저장하기 위한 데이터 표준으로 db로도 사용된다.
기본형태는 { key : value } 와 같이 키와 값이 쌍을 이루는 구조이다.
여러개를 표현할때는 쉼표를 사용한다.
let nodejsBoot = {
title: "Node.js를 공부해보자",
price: 20000,
description: "이 책 좋음 왜? 강사님이 지음"
}
// express에서 사용해보자
app.get('/products/1', function(req,res) {
res.json(nodejsBoot)
// localhost:1234/products/1 페이지에
// {"title": "Node.js를 공부해보자","price": 20000,"description": "이 책 좋음 왜? 강사님이 지음" } 이 나옴
})