在REST方法中获取原始请求(springframework)

时间:2014-04-01 02:12:10

标签: java spring http rest

有没有办法在REST方法中获取http请求(标题内容)?我使用的是Spring框架。

我想在当前请求中为REST方法中的其他服务器构建一个新请求。这更像是代理/转发服务 - 所以我想在原始请求中保留我想要的东西。 我没有太多选择 - 否则我不会使用REST来做这些事情。

spring框架是否提供这样的界面?

例如 - 如果我想在下面的代码中的greeting方法中获取请求标头(来自spring.io的示例代码)

@Controller
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public @ResponseBody Greeting greeting(
            @RequestParam(value="name", required=false, defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}

1 个答案:

答案 0 :(得分:2)

您可以简单地为处理程序方法提供类型为HttpServletRequest的参数,Spring将为您提供。

@RequestMapping("/greeting")
public @ResponseBody Greeting greeting(
        @RequestParam(value="name", required=false, defaultValue="World") String name, 
        HttpServletRequest request) {

HttpServletRequest提供了许多methods来检索HTTP标头。

或者,Spring还提供@RequestHeader注释,可以像@RequestParam一样使用来从HTTP请求中检索标头。