如何在Spring @RestController中获取绝对的Web服务器路径?

时间:2018-10-30 13:01:13

标签: spring spring-mvc spring-rest spring-web

我希望我的@RestController返回到我的Web服务器的绝对URL路径。但是路径不应硬编码,而应从运行Spring应用程序的应用程序服务器派生。

@RestController
public class FileService {
     @GetMapping("/list")
     public String getFiles(String key) {
            String filepath = manager.getFile(key);
            //TODO how to return the file with absolute path to webserver?
     }
}

此外,如果用户通过http请求文件,则服务器应以http响应。同样,如果请求https,则应在绝对URL之前添加https前缀。

问题:如何动态获取控制器内部的绝对路径?

2 个答案:

答案 0 :(得分:2)

您可以从HttpServletRequest中提取它:

 @GetMapping("/list")
 public String getFiles(@RequestParam("key") String key, HttpServletRequest req) {
        String filepath = manager.getFile(key);
        String url = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + req.getContextPath();
 }

答案 1 :(得分:0)

使用configure do config.type_specs = true end required(:my_field, Types::Params::Integer).filled(gt?: 0) 中的方法,您可以将其传递给控制器​​方法来获取:

HttpServletRequest