Class HttpHeaders
Class HttpHeaders
public final class HttpHeaders
extends Object
HTTP 헤더 집합의 읽기 전용 뷰예요. HttpHeaders는 일반적으로 직접 생성되지 않고 HttpRequest나 HttpResponse에서 반환돼요. 특정 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일 때