Как получить абсолютный путь к веб-серверу в Spring @RestController? - PullRequest
0 голосов
/ 30 октября 2018

Я хочу, чтобы мой @RestController возвратил абсолютный путь к 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 голосов
/ 30 октября 2018

Используйте методы из 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());
}
0 голосов
/ 30 октября 2018

Вы можете извлечь его из 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();
 }
...