Skip to main content

Class: IncomingMessage

Class: IncomingMessage​

HTTP/HTTPS 요청에 대한 응답을 처리한다.

프로세스: 메인, 유틸리티
이 클래스는 'electron' 모듈에서 직접 내보내지 않는다. Electron API의 다른 메서드의 반환값으로만 사용할 수 있다.

IncomingMessage는 읽기 가능한 스트림 인터페이스를 구현하며, 따라서 EventEmitter이다.

인스턴스 이벤트​

이벤트: 'data'​

반환값:

  • chunk Buffer - 응답 본문 데이터의 일부

data 이벤트는 응답 데이터를 애플리케이션 코드로 전달하는 일반적인 방법이다.

이벤트: 'end'​

응답 본문이 끝났음을 나타낸다. 이 이벤트는 'data' 이벤트보다 먼저 배치되어야 한다.

이벤트: 'aborted'​

진행 중인 HTTP 트랜잭션에서 요청이 취소되었을 때 발생한다.

이벤트: 'error'​

반환값:

  • error Error - 일반적으로 실패의 근본 원인을 식별하는 오류 문자열을 포함한다.

스트리밍 중인 응답 데이터 이벤트에서 오류가 발생했을 때 이벤트가 발생한다. 예를 들어, 서버가 응답이 여전히 스트리밍 중일 때 기본 연결을 닫으면, 응답 객체에서 error 이벤트가 발생하고, 이후 요청 객체에서 close 이벤트가 발생한다.

인스턴스 속성​

IncomingMessage 인스턴스는 다음과 같은 읽기 전용 속성을 가진다:

response.statusCode​

HTTP 응답 상태 코드를 나타내는 Integer 타입의 값이다.

response.statusMessage​

HTTP 상태 메시지를 나타내는 문자열이다.

response.headers​

response.headers는 HTTP 응답 헤더를 나타내는 Record<string, string | string[]> 타입의 객체다. 이 headers 객체는 다음과 같은 방식으로 구성된다:

  • 모든 헤더 이름은 소문자로 변환된다.
  • age, authorization, content-length, content-type, etag, expires, from, host, if-modified-since, if-unmodified-since, last-modified, location, max-forwards, proxy-authorization, referer, retry-after, server, user-agent와 같은 헤더의 중복은 제거된다.
  • set-cookie는 항상 배열로 처리된다. 중복된 값은 배열에 추가된다.
  • cookie 헤더의 중복 값은 '; '로 연결된다.
  • 그 외의 모든 헤더의 중복 값은 ', '로 연결된다.

response.httpVersion​

HTTP 프로토콜 버전 번호를 나타내는 문자열이다. 일반적으로 '1.0' 또는 '1.1'과 같은 값을 가진다. 또한 httpVersionMajor와 httpVersionMinor는 각각 HTTP 메이저 버전과 마이너 버전 번호를 반환하는 정수형 읽기 전용 속성이다.

response.httpVersionMajor​

HTTP 프로토콜의 주 버전 번호를 나타내는 정수(Integer) 값이다.

response.httpVersionMinor​

response.httpVersionMinor는 HTTP 프로토콜의 부 버전 번호를 나타내는 정수(Integer) 값이다. 이 값은 HTTP 버전의 마지막 숫자를 의미한다. 예를 들어, HTTP/1.1에서 부 버전 번호는 1이 된다.

response.rawHeaders​

response.rawHeaders는 HTTP 응답 헤더를 그대로 받은 대로 포함하는 string[] 타입의 배열이다. 키와 값이 동일한 리스트에 포함되어 있으며, 튜플 형태의 리스트가 아니다. 따라서 짝수 인덱스는 키 값을 나타내고, 홀수 인덱스는 해당 키와 연관된 값을 나타낸다. 헤더 이름은 소문자로 변환되지 않으며, 중복된 헤더도 병합되지 않는다.

// 다음과 같은 형태로 출력된다:
//
// [ 'user-agent',
// 'this is invalid because there can be only one',
// 'User-Agent',
// 'curl/7.22.0',
// 'Host',
// '127.0.0.1:8000',
// 'ACCEPT',
// '*/*' ]
console.log(response.rawHeaders)