Node.js # [Web Express]

Danny·2023년 11월 15일
0

백엔드

목록 보기
8/10

Express?

express가 뭔데요

node.js를 위한 빠르고 쉬운 웹 프레임워크,
파이썬의 Django, 자바의 spring..


개발 환경 구축하기

Visual Studio Code를 사용한다면 더욱 쉽게 설치가 가능하다.

npm init
{
  "name": "express-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js", // 메인 자바스크립트 파일
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {  // 사용한 패키지 목록
    "express": "^4.18.2"
  }
}

예제 package.json이다. npm init설치중 참고해서 작성하면 된다.

이름과 버전만 기록되고 버전도 명확하게 저장되는 것이 아니기 때문에 package-lock.json이라는 파일이 생성되며 해당 파일에는 사용한 Npm 패키지에 대한 구체적인 내용이 저장된다.

웹 서버 구축하기

다음의 명령어를 터미널에 입력하여 express를 설치한다.

npm install express

package.json의 main에 저장되어 있는 이름으로 자바스크립트 파일을 생성한 후 아래의 코드를 입력한다.

//express를 사용하겠다.
const express = require("express");
const cors = require("cors");
const app = express();
const whitelist = ["http://localhost"];
//localhost:3030
app.set("port", process.env.PORT || 3030);
app.set("host", process.env.HOST || "0.0.0.0");
  • 3030포트로 접속할 경우 접속한 유저의 아이피를 보여주는 웹 서버
  • 0.0.0.0으로 설정하면 다른 네트워크에서도 접근이 가능하도록 아이피를 개방

cors 설정하기

일반적인 웹브라우저에서는 post로 데이터를 전송,전송 받는 것은 불가능하다.
서버에 접속하는 코드를 작성하여 post방식으로 통신하여야 한다.

npm install cors
const cors = require("cors");

접속 가능한 주소와 허가되지 않은 주소를 나눈 예제

const express = require("express");
const cors = require("cors");
const app = express();
const whitelist = ["http://localhost"];

app.set("port", process.env.PORT || 3030);
app.set("host", process.env.HOST || "0.0.0.0");

app.use(
  cors({
    origin(req, res) {
      console.log("접속된 주소: " + req),
        -1 == whitelist.indexOf(req) && req
          ? res(Error("허가되지 않은 주소입니다."))
          : res(null, !0);
    },
    credentials: !0,
    optionsSuccessStatus: 200,
  })
);

app.all("/*", function (req, res, next) {
  let ip = req.headers.origin;
  (-1 == whitelist.indexOf(ip) && ip) ||
    (res.header("Access-Control-Allow-Origin", ip),
    res.header("Access-Control-Allow-Headers", "X-Requested-With"),
    next());
});

app.get("/", function (req, res) {
  res.send("접속된 아이피: " + req.ip);
});

app.listen(app.get("port"), app.get("host"), () =>
  console.log(
    "Server is running on : " + app.get("host") + ":" + app.get("port")
  )
);

0개의 댓글