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'과 같은 값을 가진다. 또한 httpVersionMajorhttpVersionMinor는 각각 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)