要自定义响应头信息,让请求返回 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!"}