Class HttpHeaders

Class HttpHeaders

public final class HttpHeaders
extends Object

HTTP 헤더 집합의 읽기 전용 뷰예요. HttpHeaders는 일반적으로 직접 생성되지 않고 HttpRequestHttpResponse에서 반환돼요. 특정 HTTP 헤더는 요청 빌더의 headers 메서드 중 하나를 통해 요청에 설정될 수 있어요. 이 클래스의 (String 헤더 이름을 받아들이는) 메서드들과 map 메서드가 반환하는 Map은 헤더 값을 가져올 때 대소문자와 무관하게 동작해요. HTTP 헤더 이름은 HTTP 프로토콜에서 두 번 이상 나타날 수 있어요. 그렇기 때문에 헤더는 이름과 값 목록으로 표현돼요. 헤더 값의 각 출현은 그 값을 해석하지 않고 해당 헤더 이름 목록에 그대로 추가돼요. 특히 HttpHeaders는 쉼표로 구분된 헤더 값 문자열의 어떤 분할(splitting)이나 결합(joining)도 수행하지 않아요. 요청을 만들 때 헤더 값 목록의 요소 순서는 보존돼요. 응답의 경우 헤더 값 목록의 요소 순서는 받은 순서예요. 그러나 map 메서드가 반환하는 Map은 그 항목들의 순서에 대해 어떤 보장도 제공하지 않아요. HttpHeaders 인스턴스는 불변(immutable)이에요.

firstValue

public Optional<String> firstValue(String name)

주어진 이름의 (여러 값을 가질 수 있는) 헤더의 첫 번째 문자열 값을 담은 Optional을 반환해요. 헤더가 없으면 반환된 Optional은 비어 있어요.

  • Parameters: name - 헤더 이름
  • Returns: 있으면 첫 번째 이름을 가진 헤더 문자열 값을 담은 Optional<String>

firstValueAsLong

public OptionalLong firstValueAsLong(String name)

이름이 붙은 헤더 필드의 첫 번째 문자열 값을 담은 OptionalLong을 반환해요. 헤더가 없으면 Optional은 비어 있어요. 헤더가 있는데 그 값이 Long 값으로 파싱되지 않으면 예외가 던져져요.

  • Parameters: name - 헤더 이름
  • Returns: OptionalLong
  • Throws: NumberFormatException - 값을 찾았지만 Long으로 파싱되지 않을 때

allValues

public List<String> allValues(String name)

주어진 이름의 헤더의 모든 문자열 값의 수정 불가능한 List를 반환해요. 항상 List를 반환하며, 헤더가 없으면 비어 있을 수 있어요.

  • Parameters: name - 헤더 이름
  • Returns: 헤더 문자열 값의 List

map

public Map<String,List<String>> map()

HttpHeaders의 수정 불가능한 멀티 Map 뷰를 반환해요.

  • Returns: Map

equals

public final boolean equals(Object obj)

이 HTTP 헤더 인스턴스가 주어진 객체와 동등한지 검사해요. 주어진 객체가 HttpHeaders가 아니면 이 메서드는 false를 반환해요. 두 HTTP 헤더는 그들의 대응하는 map이 각각 동등할 때 동등해요. 이 메서드는 Object.equals 메서드의 일반 계약을 충족해요.

  • Overrides: Object 클래스의 equals
  • Parameters: obj - 이 객체를 비교할 대상 객체
  • Returns: 주어진 객체가 이 HTTP 헤더와 동등한 HttpHeaders인 경우에만 true
  • See Also: Object.hashCode(), HashMap

hashCode

public final int hashCode()

이 HTTP 헤더 인스턴스에 대한 해시 코드를 계산해요. 해시 코드는 HTTP 헤더 map의 구성 요소에 기반하며, Object.hashCode 메서드의 일반 계약을 충족해요.

  • Overrides: Object 클래스의 hashCode
  • Returns: 이 HTTP 헤더의 해시 코드 값
  • See Also: Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

이 HTTP 헤더를 문자열로 반환해요.

  • Overrides: Object 클래스의 toString
  • Returns: HTTP 헤더를 설명하는 문자열

of

public static HttpHeaders of(Map<String,List<String>> headerMap,
 BiPredicate<String,String> filter)

주어진 map에서 HTTP 헤더를 반환해요. 주어진 map의 키는 헤더 이름을 나타내고, 그 값은 그 헤더 이름에 대한 문자열 헤더 값 목록을 나타내요. HTTP 헤더 이름은 HTTP 프로토콜에서 두 번 이상 나타날 수 있어요. 그런 다중 값을 가진 헤더는 주어진 map에서 단일 항목으로 표현되어야 해요. 그 항목의 값은 여러 헤더 문자열 값을 나타내는 목록이에요. 주어진 map과 그 목록에서 가져온 모든 문자열 값은 처리 전에 선행·후행 공백이 제거돼요. 필터링 후에 적어도 하나의, 비어 있을 수 있는 문자열 값을 포함하는 헤더만 HTTP 헤더에 추가될 거예요.

  • API Note: 이 메서드의 주된 목적은 테스트 프레임워크를 위한 것이에요. 요청별 헤더는 HttpRequest의 headers 메서드 중 하나를 통해 설정할 수 있어요
  • Parameters: headerMap - 헤더 이름과 값을 담은 map
  • Returns: 주어진 헤더를 담은 HTTP 헤더 인스턴스
  • Throws: NullPointerException - headerMap, 주어진 map의 키나 값, map의 값 목록의 항목, 또는 filter 중 하나라도 null일 때