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

标签 java spring http rest

有没有办法在 REST 方法中获取 http 请求( header 内容)?我正在使用 spring 框架。

我想在 REST 方法中从当前请求构建到不同服务器的新请求。这更像是代理/转发服务 - 所以我想在原始请求中保留我想要的内容。 我没有太多选择 - 否则我不会使用 REST 来做这样的事情。

spring框架提供这样的接口(interface)吗?

例如 - 如果我想在下面的代码中的greeting方法中获取请求 header (来自 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));
    }
}

最佳答案

您只需为处理程序方法提供一个 HttpServletRequest 类型的参数,Spring 就会为您提供它。

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

HttpServletRequest提供了多个methods检索 HTTP header 。

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

关于java - 在 REST 方法中获取原始请求( springframework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775584/

相关文章:

silverlight - Silverlight 访问策略的访问频率是多少?

java - MOXy 编码期间生成无效 JSON

java - 在启动应用程序之前如何在项目中创建目录?

http - 按 BACK 按钮时防止缓存

java - Controller 类级别的 Pathvariable 在 Spring Restful 上不起作用

java - 在 Spring Boot 应用程序中使用 redis 创建存储库

php - 在 PHP 中,我如何删除查询字符串以避免人们刷新启动进程两次?

java - Scala 与 Java 中的样条插值性能

java - 如何用Java实现英语词典?

java - 从 Junit 中的 Jax-Rs Response 类获取 header 值、状态代码等