설정
다양한 환경과 사용 사례에 맞게 Neople SDK를 설정하는 방법
설정
다양한 환경에 맞게 SDK를 설정하고 동작을 사용자 지정하는 방법을 알아보세요.
클라이언트 설정 옵션
NeopleDFClient
와 NeopleCyphersClient
모두 다양한 설정 옵션을 지원합니다:
import { NeopleDFClient, NeopleCyphersClient } from 'neople-sdk-js';
const dfClient = new NeopleDFClient(apiKey, {
baseURL: 'https://api.neople.co.kr',
timeout: 30000,
httpAdapter: 'fetch', // 'fetch' | 'axios' | 'got' | 'node-fetch'
retryAttempts: 3,
retryDelay: 1000,
userAgent: 'MyApp/1.0.0',
debug: false,
validateResponse: true,
});
사용 가능한 옵션
옵션 | 타입 | 기본값 | 설명 |
---|---|---|---|
baseURL | string | API 기본값 | API 요청을 위한 사용자 지정 기본 URL |
timeout | number | 30000 | 요청 타임아웃 (밀리초) |
httpAdapter | string | 'fetch' | 사용할 HTTP 클라이언트 어댑터 |
retryAttempts | number | 3 | 실패한 요청에 대한 재시도 횟수 |
retryDelay | number | 1000 | 재시도 간격 (밀리초) |
userAgent | string | SDK 기본값 | 사용자 지정 User-Agent 헤더 |
debug | boolean | false | 디버그 로깅 활성화 |
validateResponse | boolean | true | 응답 데이터 유효성 검증 |
HTTP 어댑터별 설정
각 어댑터별로 고유한 설정을 지정할 수 있습니다:
// Fetch 어댑터 설정
const fetchClient = new NeopleDFClient(apiKey, {
httpAdapter: 'fetch',
fetchOptions: {
keepalive: true,
mode: 'cors',
},
});
// Axios 어댑터 설정
const axiosClient = new NeopleDFClient(apiKey, {
httpAdapter: 'axios',
axiosConfig: {
maxRedirects: 5,
proxy: {
host: '127.0.0.1',
port: 8080,
},
},
});
Next.js 설정
API 라우트
// pages/api/character/[name].ts
import { NeopleDFClient } from 'neople-sdk-js';
import { NextApiRequest, NextApiResponse } from 'next';
const dfClient = new NeopleDFClient(process.env.NEOPLE_DF_API_KEY);
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
try {
const { name } = req.query;
const characters = await dfClient.searchCharacter(name as string);
res.status(200).json(characters);
} catch (error) {
res.status(500).json({ error: error.message });
}
}
앱 라우터
// app/api/character/[name]/route.ts
import { NeopleDFClient } from 'neople-sdk-js';
import { NextRequest, NextResponse } from 'next/server';
const dfClient = new NeopleDFClient(process.env.NEOPLE_DF_API_KEY);
export async function GET(
request: NextRequest,
{ params }: { params: { name: string } }
) {
try {
const characters = await dfClient.searchCharacter(params.name);
return NextResponse.json(characters);
} catch (error) {
return NextResponse.json({ error: error.message }, { status: 500 });
}
}
서버리스 함수
Vercel 함수
// api/character.ts
import { NeopleDFClient } from 'neople-sdk-js';
import { VercelRequest, VercelResponse } from '@vercel/node';
const dfClient = new NeopleDFClient(process.env.NEOPLE_DF_API_KEY);
export default async function handler(req: VercelRequest, res: VercelResponse) {
const { name } = req.query;
try {
const characters = await dfClient.searchCharacter(name as string);
res.json(characters);
} catch (error) {
res.status(500).json({ error: error.message });
}
}
AWS Lambda
import { NeopleDFClient } from 'neople-sdk-js';
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
const dfClient = new NeopleDFClient(process.env.NEOPLE_DF_API_KEY);
export const handler = async (
event: APIGatewayProxyEvent
): Promise<APIGatewayProxyResult> => {
try {
const name = event.pathParameters?.name;
if (!name) {
return {
statusCode: 400,
body: JSON.stringify({ error: '이름 매개변수가 필요합니다' }),
};
}
const characters = await dfClient.searchCharacter(name);
return {
statusCode: 200,
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(characters),
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify({ error: error.message }),
};
}
};
오류 처리 설정
전역 오류 핸들러
import { NeopleDFClient } from 'neople-sdk-js';
const client = new NeopleDFClient(apiKey, {
onError: error => {
// 모니터링 서비스에 오류 로깅
console.error('API 오류:', error);
// 오류 추적 서비스로 전송 가능
// errorTracker.captureException(error);
},
});
사용자 지정 재시도 로직
const client = new NeopleDFClient(apiKey, {
retryAttempts: 5,
retryDelay: 2000,
shouldRetry: error => {
// 사용자 지정 재시도 로직
if (error.status === 429) {
// 속도 제한
return true;
}
if (error.status >= 500) {
// 서버 오류
return true;
}
return false;
},
});