
- HTTPS module 생성하기
이번에는 Node.js의 HTTP module을 가져다 사용하는 것이 아닌,
HTTPS module을 직접 만들어서 사용해보겠다.
HTTPS module의 역할은,
client에서 데이터를 암호화해서 특정 경로에 요청을 보내고,
server에서 암호화되어서 온 결과 데이터를 복호화하여 client로 다시 보내주는 것이다.
파일은 https.js, request.js, response.js 파일을 사용할 것이다.
request.js와 response.js에서 만든 module을 https.js 파일로 가져와서 사용할 것이다.
request.js는 요청에 필요한 함수 등을 포함하고(암호화),
response.js는 데이터의 결과를 가져오는데 필요한 함수들을 포함한다.(복호화)
// request.js
// 암호화 해주는 함수(현재는 하드코딩)
function encrypt(data) {
return "encrypted data";
}
function send(url, data) {
const encryptedData = encrypt(data);
console.log(`${encryptedData} is being sent to ${url}`);
}
module.exports = { send };
// response.js
// 복호화 해주는 함수(현재는 하드코딩)
function decrypt(data) {
return "decrypted data";
}
function read() {
return decrypt("data");
}
module.exports = { read };
// https.js
const request = require("./request.js");
const response = require("./response.js");
function makeRequest(url, data) {
// 요청을 보내기
request.send(url, data);
// 복호화한 결과 데이터를 return 하기
return response.read();
}
const responseData = makeRequest("https://naver.com", "any data");
console.log(responseData);
- module에서 export하는 방법
지금까지 module을 export 할 때 module.exports = {} 방식을 사용해왔다.
이 방식이 가장 좋은 것은 맞지만, 이 외에도 다양한 export 방식이 있다.
1. module.export.A = 1;
이렇게 바로 export를 해줄 수 있다.
함수도 같은 방식으로 export 해줄 수 있다.
module.exports.encrypt = function encrypt(data) {
return "encrypted data";
};
2. export.A = 1; (위의 방식에서 module 생략한다.)
exports.encrypt = function encrypt(data) {
return "encrypted data";
};
1의 경우, 대표로 내보내고 싶은 변수나 함수가 있을 때 module 이름을 생략한다.
// request.js
module.exports = function encrypt(data) {
return "encrypted data";
};
// module을 가져다 사용할 때
// 변수명은 변수, 함수에 맞게 지으면 된다. encrypt가 대표로 가져온 encrypt 함수.
const encrypt = require("./request.js");
3. const { send } = require("./request");
기존의 방식대로 사용하되, 구조 분해 할당을 해준다.
const { send } = require("./request.js");
const { read } = require("./response.js");
function makeRequest(url, data) {
// 요청을 보내기
send(url, data);
// 복호화한 결과 데이터를 return 하기
return read();
}
'Backend > Node.js' 카테고리의 다른 글
Module 캐싱 (0) | 2024.12.14 |
---|---|
CommonJS와 ECMAScript module의 차이 (0) | 2024.12.14 |
HTTP server 구축하기 (0) | 2024.12.14 |
Node.js module (0) | 2024.12.14 |
Node.js 내부 (0) | 2024.12.06 |
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!