Headers
Headers (HTTP 요청·응답 헤더)
HTTP 요청과 응답의 헤더를 나타내는 클래스로, Map<String, List<String>> 인터페이스를 구현합니다.
본문
키는 헤더 이름을 나타내는 대소문자를 구분하지 않는 문자열이고, 각 키에 연결된 값은 요청이나 응답에서 해당 헤더 이름이 나타날 때마다 하나의 요소를 갖는 List<String>입니다. 예를 들어 응답 헤더 인스턴스에 "HeaderName"이라는 하나의 키와 "value1", "value2"라는 두 값이 있으면, 이 객체는 아래처럼 두 줄의 헤더로 출력됩니다.
HeaderName: value1
HeaderName: value2
일반적인 Map 메서드는 모두 제공하지만, 다음 편의 메서드를 주로 쓰게 될 거예요.
getFirst(String)— 단일 값 헤더이거나 다중 값 헤더의 첫 번째 값을 반환합니다.add(String, String)— 주어진 키의 목록에 주어진 헤더 값을 추가해요.set(String, String)— 주어진 헤더 필드를 단일 값으로 설정하고, 기존 값 목록을 덮어씁니다.
Headers 인스턴스는 가변(mutable) 또는 불변(immutable)이에요. 가변 헤더는 헤더 이름과 값을 추가·제거·수정할 수 있고, 예를 들어 HttpExchange.getResponseHeaders()가 반환하는 인스턴스가 이에 해당합니다. 불변 헤더는 헤더 이름이나 값의 수정을 허용하지 않으며, HttpExchange.getRequestHeaders()가 반환하는 인스턴스가 여기 속해요. 불변 인스턴스의 변경 메서드는 무조건 UnsupportedOperationException을 던집니다.
이 클래스의 모든 메서드는 키와 값에 null을 거부합니다. HTTP 요청·응답 헤더에는 null 키가 절대 존재하지 않기 때문이에요.
생성자
Headers()— 빈Headers인스턴스를 만듭니다.Headers(Map<String, List<String>> headers)— 주어진 헤더와 같은 이름·값을 가진 가변Headers를 만듭니다.
그 외 메서드
of(String... headers)— 주어진 이름-값 쌍을 담은 불변Headers를 반환합니다.Map의 표준 메서드(get,put,clear,keySet,entrySet,containsKey등)도 그대로 사용할 수 있어요.