如何在 Spring @RestController 中获取网络服务器的绝对路径?
How to get absolute webserver path in a Spring @RestController?
我希望我的 @RestController
到 return 到我的网络服务器的绝对 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 前缀
问题:如何动态获取控制器内部的绝对路径?
你可以从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();
}
使用来自 HttpServletRequest
的方法,您可以通过将其传递给控制器方法来获得这些方法:
@GetMapping("/list")
public String getFiles(@RequestParam("key") String key, HttpServletRequest request) {
String serverAddress = String.format(
"%s://%s:%d",
request.geScheme(),
request.getServerName(),
request.getServerPort());
}
我希望我的 @RestController
到 return 到我的网络服务器的绝对 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 前缀问题:如何动态获取控制器内部的绝对路径?
你可以从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();
}
使用来自 HttpServletRequest
的方法,您可以通过将其传递给控制器方法来获得这些方法:
@GetMapping("/list")
public String getFiles(@RequestParam("key") String key, HttpServletRequest request) {
String serverAddress = String.format(
"%s://%s:%d",
request.geScheme(),
request.getServerName(),
request.getServerPort());
}