Spring Boot Web:如何设置HTTP响应头


#Spring Boot#


要自定义响应头信息,让请求返回 ResponseEntity 即可。

代码示例

基于 Spring Boot Web:通过 Hello World 入门 中的示例代码稍作更改。

项目结构:

├── build.gradle
└── src
    └── main
        ├── java
        │   └── hello
        │       ├── Application.java
        │       ├── Greeting.java
        │       └── GreetingController.java
        └── resources

在 GreetingController 类中增加:

@RequestMapping(value = "/greeting4", method = RequestMethod.POST)
public ResponseEntity<Greeting> greeting4(@RequestParam(value="name", defaultValue="World") String name) {
    Greeting greeting= new Greeting(counter.incrementAndGet(), String.format("Hello, %s!", name));

    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.set("MyResponseHeader", "MyValue");

    return new ResponseEntity<>(greeting, responseHeaders, HttpStatus.OK); // 顺便把状态码也设置了
}

使用 postman 测试

使用 postman 用 POST 方法请求 http://127.0.0.1:8080/greeting4,响应体:

{
    "id": 1,
    "content": "Hello, World!"
}

而响应头中能看到MyResponseHeader: MyValue

使用 curl 命令测试

只输出响应体:

$ curl -d "name=Spring" "http://127.0.0.1:8080/greeting4"
{"id":2,"content":"Hello, Spring!"}

输出响应头和响应体:

$ curl -d "name=Spring" -D - "http://127.0.0.1:8080/greeting4"
HTTP/1.1 200
MyResponseHeader: MyValue
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 09 Mar 2019 14:50:38 GMT

{"id":3,"content":"Hello, Spring!"}

( 本文完 )