- クライアントからのリクエストヘッダの名称は
javax.servlet.http.HttpServletRequest#getHeaderNames
で取得できる。- ところが戻り値が
Enumeration<String>
なので、Java8の時代には利用し難い。 -
Stream
を利用して、ヘッダ名をキーに持ち、値をリストで持つMap
に変換して使いやすくする。
- ところが戻り値が
import javax.servlet.http.HttpServletRequest;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class RequestUtils {
public static Map<String, List<String>> getHeaders(HttpServletRequest request) {
return Collections.list(request.getHeaderNames()).stream()
.collect(Collectors.toMap(
headerName -> headerName,
headerName -> Collections.list(request.getHeaders(headerName))));
}
}