SpringBoot получает request.remoteAddress() без org.springframework.web.servlet.function.ServerRequestJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 SpringBoot получает request.remoteAddress() без org.springframework.web.servlet.function.ServerRequest

Сообщение Anonymous »

Я пытаюсь получить request.remoteAddress() в классе контроллера SpringBoot.
Однако в настоящее время контроллеры принимают тело следующим образом:

Код: Выделить всё

@RestController
public class HelloController {

@PostMapping("/coolendpointTWO")
public String withRequestBody(@RequestBody MyPojo myPojo) {

System.out.println("received object" + myPojo);
//handle myPojo with my business logic

String ip = ""; //How to get the IP, since I am not using ServerRequest
return "good: " + ip;
}

}
Как видите, контроллер напрямую работает с заголовком и телом; он не использует ServerRequest.
Я понимаю, что эта конструкция позволит получить request.remoteAddress().

Код: Выделить всё

@RestController
public class HelloServerRequestController {

@PostMapping("/coolendpointONE")
public String withServerRequest(ServerRequest request) throws ServletException, IOException {
MyPojo myPojo = request.body(MyPojo.class);
System.out.println("received object" + myPojo);
//handle myPojo with my business logic

String ip = request.remoteAddress().map(InetSocketAddress::getAddress).map(InetAddress::getHostAddress).orElse("0");
return "Message sent: " + ip;
}

}
Однако по другим причинам мы не можем провести рефакторинг (@RequestBody MyPojo myPojo) -> (запрос ServerRequest). И на самом деле, мне бы хотелось избежать необходимости принимать весь ServerRequest в параметре метода только для того, чтобы получить удаленный адрес. Текущая конструкция (@RequestBody MyPojo myPojo) очень помогает понять, что будет телом.
Вопрос:
Сохраняя подпись
р>

Код: Выделить всё

    @PostMapping("/coolendpointTWO")
public String withRequestBody(@RequestBody MyPojo myPojo) {
Есть ли способ получить IP?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -web-servl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»