Как правильно отправить запрос POST из одного веб-приложения в другой в Spring Boot?

76
6

Рассмотрим ситуацию, когда у меня есть два веб-приложения A и B

Исходные данные поступают в A, где у меня есть следующий контроллер:

@RestController
public class restController {
@RequestMapping(path = "/testA", method = RequestMethod.POST)
public final void test(*inputdata*) { "redirect POST to B app" }
}

Эти данные должны быть отправлены в приложение B:

@RestController
public class restController {
@RequestMapping(path = "/testB", method = RequestMethod.POST)
public final void test(*inputdata*) { 'some logic' }
}

И результат логики должен быть отправлен обратно в приложение.

Связь должна происходить в формате RESTful.

Насколько я узнал по "googling", нет способа сделать это весной, и я должен создать собственный метод "POST", это правда? Поскольку эта ссылка http://www.baeldung.com/spring-redirect-and-forward содержит информацию о "перенаправлении HTTP-запроса POST", но я не могу понять, как они ее использовали.

Спасибо!

спросил(а) 2021-01-25T18:50:44+03:00 4 месяца, 3 недели назад
1
Решение
77

Вы можете использовать RestTemplate или Feign Client.

Пример публикации RestTemplate:

Foo foo = restTemplate.postForObject("/testB", request, Foo.class);

Однако, поскольку вы используете Microservices, вы должны использовать клиент Feign для связи с микросервисами.

Изменить:

Feign предоставляет много дополнительных преимуществ по сравнению с RestTemplate.

Пример: клиент Feign обеспечивает балансировку нагрузки из коробки.

Вы можете прочитать больше здесь

ответил(а) 2021-01-25T18:50:44+03:00 4 месяца, 3 недели назад
63

redirect переходит к браузеру пользователей, а затем переходит к перенаправленному URL. Он всегда будет использоваться как запрос GET. В вашем случае вам нужно будет вызвать приложение B из A с помощью httpclient (RestTemplate) из A. Я не уверен, удовлетворит ли это ваше требование.


Другой способ может состоять в том, чтобы отправить страницу в качестве ответа от запроса А и отправить страницу на запрос ajax, который является POST, но, я думаю, поскольку вы хотите, чтобы все в REST было не таким, каким вы хотите.

ответил(а) 2021-01-25T18:50:44+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема