에러 코드 목록
| 코드 | 상수 | 메시지 | 설명 |
|---|
0 | OK | OK | 성공 |
4000 | ERROR_CODE_INVALID_UNIT | Invalid unit | 유효하지 않은 광고 유닛 ID |
4001 | ERROR_CODE_AD_INACTIVE | Ad inactive | 활성화된 광고 캠페인 없음 |
4002 | ERROR_CODE_AD_NO_FILL | No fill | 기준에 맞는 광고 없음 |
4003 | ERROR_CODE_INVALID_PARAMS | Invalid params | 유효하지 않은 파라미터 |
에러별 상세 설명
ERROR_CODE_INVALID_UNIT (4000)
원인: 존재하지 않거나 비활성화된 광고 유닛 ID로 요청했습니다.
해결 방법:
- 콘솔에서 광고 유닛 ID가 정확한지 확인
- 광고 유닛이 활성화 상태인지 확인
- 복사/붙여넣기 시 공백이나 특수문자가 포함되지 않았는지 확인
{
"code": 4000,
"msg": "Invalid unit",
"result": null
}
ERROR_CODE_AD_INACTIVE (4001)
원인: 해당 광고 유닛에 활성화된 광고 캠페인이 없습니다.
해결 방법:
- 콘솔에서 캠페인이 실행 중인지 확인
- 캠페인 일정(시작일/종료일)을 확인
- 캠페인 예산이 소진되지 않았는지 확인
{
"code": 4001,
"msg": "Ad inactive",
"result": null
}
ERROR_CODE_AD_NO_FILL (4002)
원인: 타겟팅 조건에 맞는 광고를 찾을 수 없습니다.
해결 방법:
- 타겟팅 설정이 너무 제한적이지 않은지 확인
- 재시도 로직 구현 (지수 백오프 권장)
- 대체 콘텐츠(폴백) 준비
{
"code": 4002,
"msg": "No fill",
"result": null
}
재시도 구현 예시:
async function requestAdWithRetry(params, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await axios.get('https://api-v2.adrop.io/request', {
params,
headers: { 'Authorization': 'YOUR_APP_KEY' }
});
if (response.data.code === 0) {
return response.data.result;
}
if (response.data.code === 4002) {
// No fill - 재시도
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
continue;
}
// 다른 에러는 즉시 반환
throw new Error(response.data.msg);
} catch (error) {
if (i === maxRetries - 1) throw error;
}
}
return null; // 폴백 콘텐츠 표시
}
ERROR_CODE_INVALID_PARAMS (4003)
원인: 요청 파라미터가 잘못되었습니다.
해결 방법:
- 필수 파라미터(
unit)가 포함되었는지 확인
- 파라미터 값의 형식이 올바른지 확인
- 파라미터 이름에 오타가 없는지 확인
{
"code": 4003,
"msg": "Invalid params",
"result": null
}
파라미터 체크리스트:
| 파라미터 | 필수 | 올바른 값 예시 |
|---|
unit | 필수 | AD_UNIT_123 |
pf | 권장 | android, ios, web |
lcl | 권장 | ko_KR, en_US |
theme | 선택 | light, dark |
에러 처리 모범 사례
1. 에러 코드 기반 분기 처리
function handleAdResponse(response) {
switch (response.code) {
case 0:
// 성공 - 광고 렌더링
renderAd(response.result);
break;
case 4000:
// 유닛 ID 오류 - 로그 기록
console.error('Invalid unit ID');
break;
case 4001:
case 4002:
// 광고 없음 - 폴백 콘텐츠 표시
showFallbackContent();
break;
case 4003:
// 파라미터 오류 - 개발자에게 알림
console.error('Invalid parameters:', response.msg);
break;
default:
// 알 수 없는 에러
console.error('Unknown error:', response.code, response.msg);
}
}
2. 폴백 콘텐츠 준비
function showFallbackContent() {
const container = document.getElementById('ad-container');
container.innerHTML = `
<div class="fallback-content">
<img src="/images/house-ad.jpg" alt="House Ad" />
</div>
`;
}
3. 모니터링 및 로깅
function logAdError(code, message, params) {
// 에러 발생률 모니터링
analytics.track('ad_error', {
error_code: code,
error_message: message,
unit_id: params.unit,
timestamp: new Date().toISOString()
});
}
HTTP 상태 코드
REST API는 표준 HTTP 상태 코드도 함께 반환합니다.
| HTTP 상태 | 설명 |
|---|
200 | 요청 성공 (에러 코드는 응답 본문에서 확인) |
401 | 인증 실패 (App Key 확인) |
500 | 서버 내부 오류 |
HTTP 200이라도 응답 본문의 code 값을 반드시 확인하세요. 비즈니스 로직 에러는 응답 본문에 포함됩니다.
관련 문서