Express 프레임워크

piper ·2024년 4월 17일
0

Nodejs

목록 보기
9/9

Express.js:

Node.js를 위한 웹 애플리케이션 프레임워크로, 웹 서버 및 웹 애플리케이션 개발을 단순화하고 보다 쉽게 관리할 수 있도록 도와준다. node.js의 http.createServer() 메서드를 사용하여 http 웹서버를 만들 던 것이 Express 프레임워크를 사용하여 좀 더 서버를 쉽게 만들고 요청, 전송 처리를 쉽게 관리하게 해준다.

미들웨어 (Middleware):

Express의 핵심 개념으로, 요청과 응답 사이에 위치하여 요청을 처리하거나 전달된 요청을 수정하는 기능을 수행한다. app.use() 메서드를 사용하여 미들웨어를 추가할 수 있다.

라우팅 (Routing):

요청된 URL 경로에 따라 서버에서 특정한 작업을 수행하는 것을 의미.
app.get(), app.post(), app.put() 등의 메서드를 사용하여 라우팅을 설정할 수 있다.

요청(Request) 객체:

클라이언트에서 서버로 전송되는 HTTP 요청과 관련된 정보를 포함하고 있는 객체.
요청 헤더, 요청 본문(body), URL 등의 정보를 확인할 수 있다.

응답(Response) 객체:

서버에서 클라이언트로 전송되는 HTTP 응답과 관련된 기능을 제공한다.
응답 상태 코드, 응답 본문(body), 응답 헤더 등을 설정할 수 있다.

주요메서드

app.use(middleware):
모든 HTTP 요청에 대해 실행되는 미들웨어를 설정할 때 사용
예시:__ app.post("/경로",(req,res)=>{console.log(req.body)})
를 해보면 undefined로 나오는 것을 알 수 있다.
이때 추가해주어야 하는 미들웨어가 express.json()이다.
app.use(express.json()); 이렇게 사용가능하다.

app.get(path, callback), app.post(path, callback), app.put(path, callback), app.delete(path, callback):

각각 GET, POST, PUT, DELETE 요청을 처리하는 라우트를 설정한다.
첫 번째 인수로 경로를, 두 번째 인수로 해당 경로에 대한 콜백 함수를 전달한다.

req 객체: 요청(Request) 객체로, 클라이언트로부터 전송된 HTTP 요청에 대한 정보를 담고 있다.req.params, req.query, req.body 등을 통해 URL 파라미터, 쿼리스트링, 요청 본문 등의 정보에 접근할 수 있다.
res 객체:응답(Response) 객체로, 서버에서 클라이언트로 전송할 HTTP 응답을 구성한다.
res.send(), res.json(), res.status() 등의 메서드를 사용하여 응답을 구성하고 전송할 수 있다.

프로젝트에서 실제로 사용한 예시는 아래와 같다.

const express = require("express");
const multer = require("multer");
const mysql = require("mysql");
const cors = require("cors");
const app = express();
const upload = multer({ dest: "uploads/" });

const db = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "Apple12!!",
  database: "weather",
});
db.connect();

app.use(cors());
app.use(express.json()); // JSON 형식의 요청을 처리하기 위한 미들웨어 추가

app.post("/create", upload.single("image"), (req, res) => {
  const { name, title, posting } = req.body;
  const image = req.file.filename; // 이미지 파일명
  console.log("req입니다:", req);
  console.log("req.body입니다:", req.body);
  console.log("image입니다:", image);

  db.query(
    `INSERT INTO topic (name, title, posting, image) VALUES (?, ?, ?, ?)`,
    [name, title, posting, image],
    (error, result) => {
      if (error) {
        throw error;
      }
      res.json(result);
    }
  );
});

app.listen(3001, () => {
  console.log("Node.js 서버가 3001번 포트에서 실행 중입니다.");
});

즉 node.js의 http.createServer() 메서드를 사용하여 http 웹서버를 만들 던 것이
Express 프레임워크를 사용하여 좀 더 서버를 쉽게 만들고 요청, 전송 처리를 쉽게 관리하게 해준다.

profile
연습일지

0개의 댓글