728x90
오늘은 http 모듈을 활용해 post 요청을 보내고 응답을 받는 예시를 만들어 보겠습니다.
jsonplaceholder 사이트( http://jsonplaceholder.typicode.com )로
{"title":"foo","body":"bar","userId":1} json 문자열을 바디에 넣어 post 요청을 보내겠습니다.
http모듈은 http 웹 서버 구축 및 클라이언트 기능을 제공하는 모듈입니다.
1.프로젝트 생성 및 초기화
mkdir 생성할 폴더명
cd 방금 생성한 폴더명
npm init -y
=> 원하는 경로에 폴더를 생성하고 해당 폴더로 이동 후 프로젝트 생성 및 초기화 시켜줍니다.
2.http모듈 활용할 js파일 생성
touch js 파일명
저는 위 이미지와 같이 생성하였습니다.
3.http 모듈 활용할 js파일 코드 작성
//http 모듈 import
const http = require('node:http');
// 요청 시 바디에 넣을 JSON 문자열 생성
const postData = JSON.stringify({
title: 'foo',
body: 'bar',
userId: 1,
});
//요청시 필요한 정보 설정
const options = {
hostname: 'jsonplaceholder.typicode.com', // 요청을 보낼 호스트명
port: 80, // 포트 번호 (HTTP 기본값은 80)
path: '/posts', // 요청할 경로
method: 'POST', // HTTP 메서드
headers: {
'Content-Type': 'application/json; charset=UTF-8',
'Content-Length': Buffer.byteLength(postData), // 데이터 길이 설정
},
};
// 요청 작업용 객체 생성 및 응답 받을시 처리 방식 설정
//http.request() 함수를 활용해 http.ClientRequest(요청에 대한 헤더 및 콜백 등 요청에 대한 설정 역할) 객체를 생성
const req = http.request(options, (res) => {
console.log(`상태 코드: ${res.statusCode}`);
console.log(`헤더: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8'); // 응답 데이터를 utf8 문자열로 처리
let responseData = '';
//응답 받을시 응답 내용 변수에 데이터 추가
//data: 스트림에서 데이터 조각 덩어리(chunk)를 넘겨 받을때마다 발생하는 이벤트
res.on('data', (chunk) => {
responseData += chunk;
});
//응답 수신 다 끝났을 경우 이벤트 실행
//end: 스트림에서 더 이상 소비할 데이터가 없을때 발생하는 이벤트
// 즉, 스트림에서 더 이상 받을 데이터가 없는 수신 완료시 발생하는 이벤트
res.on('end', () => {
console.log(`응답 본문: ${responseData}`);
});
});
//데이터를 쓰는 도중 오류 발생시 호출되는 이벤트
// 즉 요청 중 에러 발생시 호출되는 메서드
req.on('error', (e) => {
console.error(`요청 에러: ${e.message}`);
});
//설정한 request 객체 정보대로 request 정보를 전송 그리고 다 보낸 후 서버로 요청 전송 완료됨을 알림
//즉 요청 관련 헤더 및 데이터들 전송 그리고 스트림에 남은 데이터 flush 하고 0\r\n\r\n를 보내서 전송 데이터가 끝남을 서버로 알림
req.end(postData);
실행 결과
post 요청 및 응답이 성공적으로 수행되었음을 확인할 수 있습니다.
'Nodejs' 카테고리의 다른 글
[Nodejs]http 모듈 활용해 get 요청 보내고 응답 받기 (0) | 2024.12.23 |
---|---|
[Nodejs]http 모듈 활용해 서버 만들기 (4) | 2024.12.17 |
[Nodejs]비동기, 콜백 방식으로 파일 생성 및 쓰기 예시 만들기 (0) | 2024.12.11 |
[Nodejs] async await를 사용해 파일 생성 및 쓰기 예시 만들기 (2) | 2024.12.05 |
[Nodejs]동기 방식으로 파일 생성 및 쓰기 예시 만들기 (0) | 2024.11.29 |