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)