[Stibee] 주소록 API 사용법 02 요청 후 상태값 반환 받기
안녕하세요. 구마입니다.
이어서 Stibee 주소록 API 사용법을 정리해보겠습니다. (JS)
오늘은 Stibee로 구독 요청을 보낸 후 구독이 잘 들어갔는지,
구독에 실패했다면 어떤 사유로 실패를 했는지를 반환 받는 코드를 설명드리겠습니다!
1. 정상적인 구독 요청 -> 성공 반환
아래 사진은 Stibee 주소록에 추가된 모습입니다.
성공적으로 주소록에 추가가 되면 Stibee에서는 상태값을 반환합니다.
1) 반환값을 console에 출력하는 코드
$.ajax({
type : 'post',
url : '구독요청URL',
contentType : 'application/json; charset=utf-8',
headers : {
"Content-Type" : "application/json",
"AccessToken" : "발급받은 토큰"
},
data: JSON.stringify(jsonData),
success : function (result) {
console.log("[result] : " + JSON.stringify(result));
}
});
2) stibee 반환값 JSON
[result] : {"Ok":true,"Error":null,"Value":{"failDuplicatedEmail":[],"failDuplicatedPhone":[],"failExistEmail":[],"failExistPhone":[],"failNoEmail":[],"failUnknown":[],"failValidation":[],"failValidationDateTime":[],"failWrongEmail":[],"failWrongPhone":[],"success":[{"$createdTime":"2024-08-02T11:23:18.392572574+09:00","$modifiedTime":"2024-08-02T11:23:18.392573178+09:00","$status":"S","$type":"S","email":"guma1123@test.com","stb_ad_agreement":false}],"update":[]}}
반환 받은 JSON을 살펴보면
- result.ok : 키값 ok는 구독 요청이 성공이든 실패든 상관없이 stibee에 요청이 전달 되면 true값을 반환합니다.
- result.Value.success : 구독 요청이 성공해 주소록에 추가되면 반환합니다.
그래서.. ㅎㅎ. result.Value.$createTime에 값이 있으면 성공으로 판단합니다.
근데 이 코드에 문제점이 있는데 .. 이건 아래에서 설명드리겠습니다.
success : function (result) {
console.log("[result] : " + JSON.stringify(result));
// 구독에 실패한 경우
if(isEmpty(JSON.stringify(result.Value.success[0] ))) {
if(!isEmpty(JSON.stringify(result.Value.failExistEmail[0].$createdTime)) ) {
alert("이미 구독중인 이메일입니다.");
}
}else if(!isEmpty(result.Value.success[0].$createdTime)) {
alert("구독되었습니다.");
}
}
/**
* 문자열이 빈 문자열인지 체크하여 결과값을 리턴한다.
* @param str : 체크할 문자열
*/
function isEmpty(str){
if(typeof str == "undefined" || str == null || str == "")
return true;
else
return false;
}
2. 중복 이메일 구독 요청 -> 실패값 반환
이미 구독하고 있는 이메일로 요청 시 반한되는 값입니다.
[result] : {"Ok":true,"Error":null,"Value":{"failDuplicatedEmail":[],"failDuplicatedPhone":[],"failExistEmail":[{"$createdTime":"2024-08-02T13:19:08.019664335+09:00","$modifiedTime":"2024-08-02T13:19:08.019664842+09:00","$status":"S","$type":"S","$unsubscribe":"","email":"guma1123@test.com"}],"failExistPhone":[],"failNoEmail":[],"failUnknown":[],"failValidation":[],"failValidationDateTime":[],"failWrongEmail":[],"failWrongPhone":[],"success":[],"update":[]}}
- result.Value.failExistEmail : 중복된 이메일로 구독 요청 시 해당 키값으로 반환됩니다.
그래서 "failExistEmail"에 $createTime이 포함되어 있으면 중복된 이메일로 처리합니다.
- let stbCreateTime = JSON.stringify(result.Value.success[0].$createdTime); // 정상적으로 구독이 되어야 넘어오는 data
- let failExistEmail = JSON.stringify(result.Value.failExistEmail[0].$createdTime); // 이미 구독중인 이메일
- let failDuplicatedEmail = JSON.stringify(result.Value.failDuplicatedEmail[0].$createdTime); // 이메일 중복 요청
- let failUnknown = JSON.stringify(result.Value.failUnknown[0].$createdTime); // 알 수 없는 오류
요 위에 아이들도 .. 해당 값이 넘어오면 alert창을 띄우고 싶은데 undefined 떠버려서..
지금은 정상 or 중복 이메일 요청으로만 처리하고 있습니다. JS null check 넘 어려웡.. @@
더 업그레이드 시키면 다시 추가하도록 하겠습니다 !
읽어주셔서 감사합니다.