Node.js에서 이미지 모더레이션 API 업로드 최적화 및 DNS 문제 해결
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

이미지 모더레이션 API 업로드 최적화: Node.js에서 Native Fetch와 DNS 문제 해결

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Node.js를 사용한 API 통합 개발자, 특히 파일 업로드 및 DNS 설정에 관심 있는 중급~상급 개발자

핵심 요약

  • form-data + node-fetch 사용이 native fetch보다 안정적인 파일 스트리밍 처리 가능
  • DNS 문제 해결: systemd-resolved 대신 8.8.8.8 또는 1.1.1.1 공공 DNS 사용 권장
  • UndiciFormData.append 제한: 스트림 대신 Buffer 또는 Blob 사용 필요
  • 최종 코드 예시: form-data + node-fetchcurl -F 동작과 동일한 multipart 요청 생성 가능

섹션별 세부 요약

1. Native `fetch`와 `form-data` 호환성 문제

  • form-data 패키지와 Undicifetch를 사용했으나 ConnectTimeoutError 발생
  • nslookup api.sightengine.com 실행 시 SERVFAIL 응답으로 DNS 문제 확인
  • systemd-resolved127.0.0.53 DNS 설정이 문제 원인

2. DNS 문제 해결 방법

  • systemd-resolved 설정 파일에 DNS=8.8.8.8 1.1.1.1 추가
  • sudo systemctl restart systemd-resolved 명령으로 설정 재시작
  • nslookup과 Node.js 코드 모두 정상적으로 DNS 해석 수행

3. 스트림 처리 제한 및 대체 방안

  • Blobstream 사용 시 UndiciFormData.append가 스트림을 지원하지 않음
  • form-data + node-fetch 사용으로 파일 스트리밍 및 메모리 효율성 개선
  • form-data 패키지 설치 및 node-fetch 사용 예시 코드 제공

4. 최종 구현 코드

  • form-datamedia, models, api_user, api_secret 필드 추가
  • node-fetch를 사용한 POST 요청과 multipart/form-data 헤더 설정
  • result.json()을 통해 API 응답 처리

결론

  • DNS 설정 수정, Undici의 스트림 제한 인지, form-data + node-fetch 사용이 안정적인 파일 업로드를 위한 핵심 전략
  • curl -F 동작과 동일한 multipart 요청 생성 가능하며, 메모리 사용 최소화