콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

노드 빌더를 위한 HTTP 요청 헬퍼#

n8n은 HTTP 요청을 위한 유연한 헬퍼를 제공하여 대부분의 복잡성을 추상화합니다.

프로그래밍 스타일 전용

이 문서의 정보는 프로그래밍 스타일을 사용하는 노드 구축에 대한 것입니다. 선언형 스타일 노드에는 적용되지 않습니다.

사용법#

execute 함수 내에서 헬퍼를 호출합니다.

1
2
3
4
5
6
7
8
9
// 인증이 필요 없는 경우
const response = await this.helpers.httpRequest(options);

// 인증이 필요한 경우
const response = await this.helpers.httpRequestWithAuthentication.call(
	this, 
	'credentialTypeName', // 예: pipedriveApi
	options,
);

options는 객체입니다:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
	url: string;
	headers?: object;
	method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD';
	body?: FormData | Array | string | number | object | Buffer | URLSearchParams;
	qs?: object;
	arrayFormat?: 'indices' | 'brackets' | 'repeat' | 'comma';
	auth?: {
		username: string,
		password: string,
	};
	disableFollowRedirect?: boolean;
	encoding?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream';
	skipSslCertificateValidation?: boolean;
	returnFullResponse?: boolean;
	proxy?: {
		host: string;
		port: string | number;
		auth?: {
			username: string;
			password: string;
		},
		protocol?: string;
	};
	timeout?: number;
	json?: boolean;
}	

url은 필수입니다. 다른 필드는 선택 사항입니다. 기본 메소드는 GET입니다.

가능한 필드에 대한 몇 가지 주의 사항:

  • body: JSON 페이로드에 대해 일반 JavaScript 객체를 사용할 수 있으며, 파일 업로드에 대해 버퍼를, multipart/form-data에 대해 FormData 인스턴스를, 그리고 application/x-www-form-urlencoded에 대해 URLSearchParams를 사용할 수 있습니다.
  • headers: 키-값 쌍입니다.
    • body가 FormData 인스턴스인 경우 n8n은 content-type: multipart/form-data를 자동으로 추가합니다.
    • bodyURLSearchParams 인스턴스인 경우 n8n은 content-type: application/x-www-form-urlencoded를 추가합니다.
    • 이 동작을 오버라이드하려면 content-type 헤더를 설정하세요.
  • arrayFormat: 쿼리 문자열에 데이터 배열이 포함된 경우, 예를 들어 const qs = {IDs: [15,17]}, arrayFormat의 값은 n8n이 이를 형식화하는 방식을 정의합니다.
    • indices (기본값): { a: ['b', 'c'] }a[0]=b&a[1]=c
    • brackets: { a: ['b', 'c'] }a[]=b&a[]=c
    • repeat: { a: ['b', 'c'] }a=b&a=c
    • comma: { a: ['b', 'c'] }a=b,c
  • auth: 기본 인증에 사용됩니다. usernamepassword를 제공합니다. n8n은 이를 생략하고 helpers.httpRequestWithAuthentication(...)를 사용하는 것을 권장합니다.
  • disableFollowRedirect: 기본적으로 n8n은 리다이렉트를 따라갑니다. 이를 방지하려면 true로 설정할 수 있습니다.
  • skipSslCertificateValidation: 적절한 인증서 없이 HTTPS 서비스를 호출하는 데 사용됩니다.
  • returnFullResponse: 본문만 반환하는 대신, 다음과 같은 형식으로 더 많은 데이터를 포함한 객체를 반환합니다: {body: body, headers: object, statusCode: 200, statusMessage: 'OK'}
  • encoding: n8n은 콘텐츠 유형을 감지할 수 있지만, 상호작용할 수 있는 Buffer를 수신하기 위해 arrayBuffer를 지정할 수 있습니다.

예제#

예제는 Mattermost 노드를 참조하세요.

이전 헬퍼의 사용 중단#

this.helpers.request(options)를 사용한 이전 헬퍼 구현은 request-promise 라이브러리를 사용하고 노출했습니다. 이는 버전 1에서 제거되었습니다.

호환성 문제를 최소화하기 위해 n8n은 Axios라는 다른 라이브러리로의 투명한 전환을 수행했습니다.

문제가 발생하는 경우 커뮤니티 포럼 또는 GitHub에 신고해 주세요.

새로운 헬퍼로의 마이그레이션 가이드#

새로운 헬퍼는 훨씬 더 강력하고, 라이브러리 중립적이며 사용하기가 쉽습니다.

새로운 노드는 모두 새로운 헬퍼를 사용해야 합니다. 기존의 커스텀 노드를 새로운 헬퍼로 마이그레이션하는 것을 강력히 고려해야 합니다. 마이그레이션 시 주요 고려 사항은 다음과 같습니다.

  • url을 수락합니다. uri는 수락하지 않습니다.
  • encoding: null은 이제 encoding: arrayBuffer이어야 합니다.
  • rejectUnauthorized: false는 이제 skipSslCertificateValidation: true입니다.
  • 페이로드를 명확히 하기 위해 content-type 헤더에 따라 body를 사용합니다.
  • resolveWithFullResponse는 이제 returnFullResponse이며 비슷한 동작을 합니다.
인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!