新手问题......我正在构建我的第一个Spring Boot restful服务。我的restful服务设计需要在响应头中返回一些数据。
如何在控制器类方法中设置响应头值?
答案 0 :(得分:11)
我建议您在询问之前搜索文档:
HttpContext.Request.Path
来源:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html
答案 1 :(得分:11)
与其他答案不同,不使用HttpServletResponse
。如果可以避免,那么您不想使用低级Servlet API。返回ResponseEntity或HttpEntity
。
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
return new ResponseEntity<>(headers, HttpStatus.OK);
答案 2 :(得分:3)
我一直在寻找答案,而且我不想创建一个响应实体。我在春季论坛上找到了解决方案,所以要感谢作者。
简而言之,您可以在方法声明中请求响应,因此可以填充该响应。
一个简单的例子:
@RequestMapping(value="/car/{carId}", method = RequestMethod.Get)
@ResponseBody
public Car getCarById(@PathVariable("carId") String Id, HttpServletResponse response) {
response.setHeader("X-Special-Header", myCar.getEcoLabel());
//get the car
return myCar;
}
希望这对其他人也有帮助。
答案 3 :(得分:3)
要设置响应标题,有多种方法:
PopupMenuButton(
captureInheritedThemes: false, // Add this line
...
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
@javax.servlet.annotation.WebFilter(urlPatterns = {"/*"})
@Component
public class ResponseHeaderFilter implements javax.servlet.Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("My-Custom-Header", "Header-Value-Here");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}