반응형
# 필요한 모듈
node.js에서 curl 사용하기 위한 request 모듈들
const request = require('request');
const request = require('request-promise-native');
request-promise-native 모듈은 promise 혹은 Async & Await를 통한 비동기처리를 하기위한 모듈이다.
하지만 둘다 설치해야 사용할수있음.
request모듈을 사용하기위한 기본적인 옵션들 선언
let headers = {
'Authorization': 'KakaoAK '+'Admin Key',
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
};
let params = {
'cid': 'TC0ONETIME', // 테스트 코드
'partner_order_id': '423423',
'partner_user_id': '---',
'item_name': '물품',
'quantity': 1,
'total_amount': 20000,
'vat_amount': 200,
'tax_free_amount': 0,
'approval_url': 'localhost/payment/approve',
'fail_url': 'localhost/payment/fail',
'cancel_url': 'localhost/payment/cancel',
};
let options = {
url: 'https://kapi.kakao.com/v1/payment/ready',
method: 'POST',
headers: headers,
form: params
};
1. 기본적인 callback방식 카카오페이 API 처리
- AJAX를 통해서 카카오API에서 받아온 정보를 다시 클라이언트에 전송하려고 했지만 내가 못하는건지 콜백방식 비동기처리라 그런지 전송하는게 안됐음 그래서 처음 그대로의 코드를 올림
const request = require('request'); //모듈
function callback(error, response, body) {
// console.log(error);
if (!error && response.statusCode === 200) {
console.log(JSON.parse(body));
return JSON.parse(body);
}
}
request(options, callback);
2. Promise then을 사용한 체이닝 방식 카카오페이 API 처리
- promise의 장점은 콜백방식보다 가독성이 좋은것도 있지만 비동기 처리이후의 처리를 then메소드를 사용해서 처리할 수 있다는게 큰 장점이다.
get_info().then 메소드가 바로 적혀있어서 get_info()선언을 따로 안해줘도 됨.
Promise 공부하기 Promise 사용방법 Promise.then() 메소드
const request = require('request-promise-native'); // 모듈
function get_info(){
return new Promise(function(resolve, reject){
request(options, function (error, response, body) {
if (error) return reject(error);
try {
resolve(JSON.parse(body));
} catch(e) {
reject(e);
}
});
});
}
get_info().then(function(val) {
console.log(val);
return res.json(val);
}).catch(function(err) {
console.err(err);
});
3. Async & Await 방식 카카오페이 API 처리
- Async & Await방식은 Promise처럼 따로 콜백부분처리이후를 then메소드로 작성해서 처리하지않고 처리된 request메소드의 값을 변수 선언을 해서 이어서 처리할 수 있게 해준다.
const request = require('request-promise-native'); // 모듈
async function get_info(){
try {
let result = await request(options, function (error, response, body) {
if (!error && response.statusCode === 200) {
return body;
}
});
return res.json(JSON.parse(result));
}
catch (e) {
console.log(e)
}
}
get_info();
res.json()과 res.send() 아래 링크를 참고해주세요
https://haeguri.github.io/2018/12/30/compare-response-json-send-func/
반응형
'Web > Node.js' 카테고리의 다른 글
node, npm 버전 관리 (0) | 2021.03.04 |
---|---|
Moment.js 시간표기와 시간 차이 구하기 (0) | 2020.07.05 |
Node.js HTTPS 서버 작동하기 (0) | 2020.07.04 |
노드몬(Nodemon) 강제종료하기 (0) | 2020.05.20 |
express 모듈 활용 정적 파일 (0) | 2020.01.16 |