HTTP 请求和 org.springframework.http 包的对应关系


本文旨在总结一个 HTTP 请求报文的各部分和 org.springframework.http 包中类的对应关系。

请求报文格式

GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

对应 Spring http 包中的类

  1. 起始行(start line)
    • 请求方法:HttpMethod;
    • 请求 URL:java.net.URL;
    • 版本号:没有对应的类,一般是0.9,1.0和1.1。
  2. 首部(headers):首部一般都是键值对,有多种方式构造。
    • MultiValueMap:内部结构是 Map,用以存放首部的键值对。
    • HttpHeaders:继承自 MultiValueMap,提供了对所有首部元素的存取方法。
    • RequestEntity.HeadersBuilder:提供了对首部常用元素的存取方法。
  3. 首部元素对应的一些类
    • Accept:MediaType;
    • Accept-Charset:java.nio.Charset;
    • Allow:Set; ...
  4. 实体:实体可以是任何类型。