728x90
반응형
🔨 Express.js
- 웹 애플리케이션 혹은 API 서버를 구축하는 데 가장 많이 사용되는 대표적인 프레임워크
- 설치
- npm install express
- app.js 생성해보기
const express = require("express");
const app = express();
const PORT = 3000;
//클라이언트에서 HTTP 요청 메소드 중 GET을 이용해서 'host:port'로 요청을 보내면 실행되는 라우터이다.
app.get("/", (req, res) => {
res.send("Hello world!");
});
// app.listen() 함수를 호출하여 서버를 실행
// 클라이언트는 'host:port'로 노드 서버에 요청을 보낼 수 있다.
app.listen(PORT, () => {
console.log(`서버가 실행됩니다. http://localhost:${PORT}`);
});
🧑🏻💻 라우팅(Routing)
- 특정 엔드 포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것
- 특정엔드포인트란?
- URI(경로)와 HTTP 요청 메소드(GET, POST 등)로 구분된 클라이언트에서 서버로 요청보낼 수 있는 문
- 익스프레스 라우트 구조
- app : express의 인스턴스
- METHOD : HTTP 요청 메소드(GET, POST 등)
- PATH : 서버에서의 경로
- HANDLER : 라우트(Route)가 일치할 때 실행되는 함수
- 라우트 처리 예시
const express = require('express');
const app = express()
// 클라이언트에서의 HTTP 요청 메소드 중 GET 방식으로 'host:post' 방식으로 호출 시
app.get('/', function(req, res){
res.send('root');
});
- 대표적인 라우트 메소드
- get, post, put, delete 등
const express = require("express");
const app = express();
app.listen(3000, () => {
console.log("server started, port 3000");
});
app.get("/customer", function (req, res) {
res.send("get 요청에 대한 응답");
});
app.post("/customer", function (req, res) {
res.send("post 요청에 대한 응답");
});
app.all("/customer", function (req, res) {
res.send("HTTP 요청 메소드 종류에 상관없이 응답");
});
👩🏻💻 라우트 핸들러
- 클라이언트 요청에 따라 라우트가 일치할 때 실행되는 콜백 함수
- 파라미터
- req : Request
- res : Response
- next : 다음 미들웨어 함수를 가리키는 오브젝트
// 콜백 함수에 의해 세 번째 파라미터로 next 오브젝트 사용
app.get('/example', function(req, res, next){
console.log('첫 번째 콜백함수');
next();
}, function(req, res){
res.send('두 번째 콜백함수');
});
👨🏻💻 응답 메소드
- res.download() : 파일을 다운로드하도록 프롬프트
- res.end() : 응답 프로세스를 종료
- res.json() : JSON 응답을 전송
- res.jsonp(): JSONP 지원을 통해 JSON 응답 전송
- res.redirect() : 요청의 경로를 재지정
- res.render() : 뷰 템플릿을 렌더링
- res.send() 다양한 유형의 응답을 전송
- res.sendFile() : 파일을 octet 스트림으로 전송
- res.sendStatus() : 응답 상태 코드를 설정한 후 해당 코드를 응답 본문(body)에 담아서 전송
📣 app.route()
- get, post, put과 같은 라우트 메소드를 한 곳에서 작성할 수 있는데, 이렇게 모듈식 라우트를 작성하면 중복성이 감소하여 코드를 좀 더 효율적으로 관리할 수 있다.
const express = require("express");
const app = express();
app.route('/customer')
.get(function(req, res){
res.send('고객 정보조회');
})
.post(function(req, res){
res.send('신규 고객추가');
})
.put(function(req, res){
res.send('고객 정보수정');
})
.delete(function(req, res){
res.send('고객 정보삭제');
});
👾 Express 에러 처리
- 라우트에서 에러를 발생시키면, 익스프레스가 알아서 이를 처리하고 에러 코드 및 에러 정보를 클라이언트에게 응답
app.get('/error', function (req, res) {
throw new Error('에러 발생');
});
- 에러 처리를 위한 미들웨어 함수 정의
- 단, 에러 처리 미들웨어 함수의 인수는 err, req, res, next 4개의 파라미터를 사용한다.
app.use(function (err, req, res, next){
res.status(500).json({statusCode: res.statusCode, errMessage: err.message});
});
🏫 Express 미들웨어
https://expressjs.com/ko/guide/using-middleware.html
Express 미들웨어 사용
미들웨어 사용 Express는 자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크이며, Express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출입니다. 미들웨어 함수는 요청 오
expressjs.com
728x90
반응형