Node Express

알파로그·2023년 12월 14일
0

Node.js

목록 보기
4/25

✏️ Express

1. 최소화

  • 개발자와 서버 사이에 최소한의 다리만 놓아줘 아이디어를 최대한 펼칠 수 있게 하면서도 유용한 기능을 제공하자
    • 프레임워크를 사용하다 보면 코드 한줄 작성하기도 전에 복잡한 코드들을 잔뜩 늘어놔야 할 때가 많지만,
      가장 먼저 불필요한 기능을 떼어내 필요한 것만 추가 해 접근성이 높은 편이다.

2. 유연함

📍 정의

  • node.js 기반의 웹 프레임워크를 의미한다.
  • Express 는 Middleware 의 연결이라고 할 수 있다.
    • Middleware 란 요청과 응답 사이에서 목적에 맞는 일을 수행하는 함수를 의미한다.
Request -> Middleware -> Middleware -> ... -> Response
  • 웹, 모바일 애플리케이션에 기능을 제공하는 최소화되고 유연한 노드 웹 애플리케이션 프레임 워크이다

✏️ Express 설치

🔗 npm 문서

npm i express

📍 서버 띄우기

  • 공식 문서에서 제공하는 아래 코드 작성으로 간단한 서버를 띄울 수 있다.
    • app.listen(port) 는 서버가 실행중인 포트를 관리하는 함수이다.
    • app.get('/', () =>) 는 API 로 각각 HTTP 메서드, 라우팅, 콜백 함수를 의미한다.
    • res.send() 를 사용해 response 값을 입력할 수 있다.
const express = require('express')
const app = express()
const port = 3000

app.get('/', function (req, res) {
    res.send('Hello World')
})

app.listen(port);
  • send 로 대부분의 데이터 형식을 응답할 수 있지만 json 을 반환할 경우 res.json() 을 사용하는 것이 효율이 더 좋다.
app.get('/', function (req, res) {
    res.json(dto)
})

📍 JSON 파싱

  • json 형식의 파일을 다루기 위해선 별도의 미들웨어가 필요하다.
//-- application setting --//
app.use(express.json());
app.use(routes);

✏️ GET 방식

  • 앞의 예제에서 기본적인 GET 방식의 API 외에도 Parameter, PathValiable 을 사용하는 것도 가능하다.

📍 PathVariable

  • 라우팅에 : 를 선언하면 그 자리에 pathVariable 을 사용할 수 있다.
    • :id 는 spring MVC 의 {id} 와 같은 기능을 수행한다.
app.get(path + '/:id', (req, res) => {
    const q = req.params;
    console.log(q)
    res.send('Hello World')
})

// GET http://localhost:3000/api/dog
10:41:06 1|index  | { id: 'dog' }
  • req.params 의 key 값으로 특정 value 를 사용할 수 있다.
app.get(path + '/:id', (req, res) => {
    dto.param = req.params.id
    res.json(dto)
})

var dto = {
    'status': 200,
    'msg': 'success',
    'param': ''
}

// GET http://localhost:3000/api/dog
{
  "status": 200,
  "msg": "success",
  "param": "dog"
}
  • 위 방법 외에도 아래와 같이 변수에 저장하는 방법도 있다.
app.get(path + '/:id', (req, res) => {
    const { id } = req.params;
    res.send(id);
})

// GET http://localhost:3000/api/dog
dog

📍 Parameter

  • 라우팅에는 아무것도 적어주지 않아도 된다.
    • req.query 를 호출해 query parameter 를 조회할 수 있다.
app.get(path + '/', (req, res) => {
    dto.param = req.query.id
    res.json(dto)
})

var dto = {
    'status': 200,
    'msg': 'success',
    'param': ''
}

// GET http://localhost:3000/api?id=dog
{
  "status": 200,
  "msg": "success",
  "param": {
    "id": "dog"
  }
}

✏️ POST 방식

  • POST 요청을 처리하기 위해선 body-parser 모듈을 먼저 설치해줘야 한다.
npm i body-parser
  • req.body 를 호출해 body 값을 사용할 수 있다.
    • body 의 json 을 파싱하려면 미들웨어 app.use(express.json()); 을 선언해야 한다.
import bodyParser from 'body-parser';

// body parser 적용
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.json());

app.post('/', (req, res) => {
    const body = req.body;
    console.log(body);
    res.send('200 ok');
})

// POST http://localhost:3000
11:09:39 1|index  | { title: 'test1' }
profile
잘못된 내용 PR 환영

0개의 댓글