Node.js 클라이언트 요청 수신

 

웹 서버란 데이터 읽기 및 처리를 통해 인터넷상의 요청에 대한 응답을 위해 설계된 소프트웨어이다.
서버와 클라이언트가 통신하는 방법 중 하나는 HTTP요청을 사용하는 것이다. 만들어진 요청이 어떤 요청인지,
예를 들어 사용자가 새로운 웹 페이지를 읽어 들이는지, 또는 지금 보고 있는 페이지의 업데이트인지 나타낸다.

HTTP 요청 메소드는 크게 두 가지가 있으며 다음과 같다.
➢ GET : 클라이언트가 서버로부터 정보를 요청.
보통 서버는 브라우저에서 볼 수 있는 컨텐츠로 응답.
➢ POST : 클라이언트가 서버로 데이터를 전송.
서버는 데이터처리 후 HTML 페이지로 응답 및 다른 페이지로 이동

Node.js를 이용하여 웹 서버를 만드는 방법과 GET과 POST를 처리하는 방법을 알고있다고 가정.

이 포스팅에서는 사용자의 요청 데이터를 추출하는 방법을 소개한다.
send me email if you have any questions.


사용자의 요청데이터

사용자의 요청데이터를 추출하는 방법은 2가지가 존재한다.

  1. HTTP POST 요청의 본문(body)를 통해
  2. HTTP POST/GET 요청의 쿼리스트링을 통해

쿼리스트링(queryString)이란?
URL경로의 끝 부분에 물음표를 붙이고 이 뒤에 키-값형태로 이루어진 스트링
Ex) http:/localhost/index?name=gildong&id=gil&password=1234

사용자의 요청데이터 분석

1. 디렉터리 생성
$ mkdir client_request_receive

2. 생성 디렉터리로 이동 후 npm init진행
$ cd client_request_receive
$ npm init

3. 클라이언트의 요청 데이터를 처리하기 위한 여러 모듈 및 패키지 인스톨
$ npm install express body-parser –save

4. main.js 소스코드 작성

  
"use strict";

const port = 3000;
const express = require("express");
const app = express();

// 요청해독을 초기화 (default : utf-8)
app.use(express.urlencoded({extended: false}));

// 요청 해독을 json으로 진행
app.use(express.json());

// 요청 데이터를 분석하는 미들웨어
// 미들웨어란 애플리케이션 로직과의 데이터 교환 전에 대기, 분석, 필터링 및 HTTP통신을 다루는 코드를 일컫는 일반적인 용어
app.use(function(req, res, next){
    console.log(req.body);
    console.log(req.query);
    next();
});

// POST 라우트
app.post("/", function(req, res){
    console.log("\npost");
    res.send("HTTP POST Successful");
});

// GET 라우트
app.get("/", function(req, res){
    console.log("\nget");
    res.send("HTTP GET Successful");
});

// 서버실행
app.listen(port, function(){
    console.log("Server port : ",port);
});

실행 결과

POST(Linux에서 제공하는 curl명령 사용)

그림1

GET(쿼리스트링을 통해서만 요청데이터 전송가능)

그림2