Headers

Headers (HTTP 요청·응답 헤더)

HTTP 요청과 응답의 헤더를 나타내는 클래스로, Map<String, List<String>> 인터페이스를 구현합니다.

출처: Java API Reference

본문

키는 헤더 이름을 나타내는 대소문자를 구분하지 않는 문자열이고, 각 키에 연결된 값은 요청이나 응답에서 해당 헤더 이름이 나타날 때마다 하나의 요소를 갖는 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 등)도 그대로 사용할 수 있어요.

더 알아보기

Java 공식 API