반응형
HTTP 요청에서 데이터를 받는 방법
const http = require("http"); // 모듈 불러오기
//서버 생성
const server = http.createServer((req, res) => {
console.log("INCOMING REQUEST");
console.log(req.method, req.url);
// post 요청 처리
if (req.method === "POST") {
let body = "";
// 데이터가 모두 수신된 후 처리 ++ body에 추가.
req.on("end", () => {
// 클라이언트로부터 모든 data를 수신하면 실행한다.
const userName = body.split("=")[1];
res.end("<h1>" + userName + "</h1>");
});
// body.split("=")는 body를 = 문자로 나눕니다. 예를 들어, body가 "username=John"이라면,
// split 결과는 ["username", "John"]가 됩니다.
// [1]은 리스트의 두 번째 요소를 선택합니다. 즉, "John"을 반환합니다.
// 이 코드는 폼 데이터를 username 파라미터로 받아서 그 값을 HTML 응답으로 반환합니다.
// 만약 body가 빈 문자열이거나 올바른 형식이 아니라면 split("=")[1]는 오류를 발생시킬 수 있습니다.
// 이를 방지하기 위해서는 추가적인 유효성 검사가 필요합니다.
//const userName = body.split("=")[1] || "Unknown";
// 데이터 수신중
req.on("data", (chunk) => {
body += chunk;
});
// req.on("data", (data) => (body += data));
// data(chunk data)가 들어올 때마다 body에 chunk data를 넣는다.
// get 요청처리
} else {
res.setHeader("Content-Type", "text/html");
res.end(
'<form method="POST"><input type="text" name="username"><button type="submit">Create User</button></form>'
);
}
});
// 서버 포트 5001에서 대기
server.listen(5001);
이 코드는 간단한 HTTP 서버를 설정합니다. 서버는 두 가지 유형의 요청을 처리합니다: POST와 GET.
- GET 요청: 서버는 HTML 폼을 반환합니다. 사용자가 폼을 제출하면 POST 요청이 전송됩니다.
- POST 요청: 서버는 요청 본문을 수신하고, 그 데이터를 처리합니다.
request.on의 이벤트
1. data : 데이터를 수신할 때 실행할 이벤트
2. end : 클라이언트로부터 모든 데이터를 수신 완료했을 때 실행할 이벤트
3. error : 요청 처리 중 에러가 발생했을 때의 이벤트
express 를 이용해서 요청하기
// 모듈가져오기
const express = require('express');
const bodyParser = require('body-parser');
// 익스프레스 앱 생성
const app = express();
// bodyParser 미들웨어 설정
app.use(bodyParser.urlencoded({ extended: false }));
//URL 인코딩된 데이터를 해석합니다. 이 미들웨어는 HTML 폼 데이터를 파싱하는 데 사용됩니다.
// POST 요청 처리
app.post('/user', (req, res, next) => {
res.send('<h1>User: ' + req.body.username + '</h1>');
});
// user 경로에 대한 POST 요청을 처리합니다.
// 사용자가 폼을 제출하면, req.body.username에 접근하여 사용자 이름을 가져옵니다.
// 가져온 사용자 이름을 <h1> 태그로 감싸서 응답으로 보냅니다.
// GET 요청 처리:
app.get('/', (req, res, next) => {
res.send(
'<form action="/user" method="POST"><input type="text" name="username"><button type="submit">Create User</button></form>'
);
});
// 경로에 대한 GET 요청을 처리합니다.
// 사용자에게 HTML 폼을 반환합니다. 사용자는 이 폼을 통해 사용자 이름을 입력하고 제출할 수 있습니다.
app.listen(5000);
반응형
'IT > node.js' 카테고리의 다른 글
[node] Express의 장점과 미들 웨어 설치 (1) | 2024.07.23 |
---|---|
[node] 에러 해결법 Error: listen EADDRINUSE :::8000temp/오류 및 해결방법, 맥북에게 포트를 빼앗겼을 때 (0) | 2024.07.18 |
[node] 'error:03000086:digital envelope routines::initialization error' (0) | 2024.07.18 |
[node] 자바스크립트로 라우터 만들기 (0) | 2024.07.08 |