Как я могу передать список <String>на сервер с URL - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь передать список строк с одного сервера на другой при весенней загрузке. Как я могу получить этот список на другом сервере?

Код, который я пробовал -

public void addNewMostPopular(List<String> totalList){  
    try {
        HttpHeaders httpHeaders = getHttpHeaders();
        HttpEntity<String> httpEntity = new HttpEntity<String>(null, httpHeaders);

        ResponseEntity responseEntity = restTemplate.exchange(
                BASE_URL + "addMostPopular/"+new ArrayList<>(totalList), HttpMethod.POST, httpEntity,TrendingCategoryDTO.class);
    }

и на стороне сервера я пытался получить как-

@RequestMapping(value="/addMostPopular/[{totalList}]", method = RequestMethod.POST)
public void addMostPopularProduct( @PathVariable List<String> totalList) {}

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Прошлый длинный объект в URL-адресе - плохая практика, так как интерпретатор Spring url имеет максимальную длину, поэтому, если вы передаете более 2048 или 4096 символов в некоторых случаях, ваш запрос возвратит неверный запрос Response 400 и не будет выполнен любой код на вашем весеннем сервере.

После этого восклицания, есть ли возможность передать список? Да, конечно! Но нам нужно использовать @RequestBody так:

@PostMapping("/addMostPopular")
public void addMostPopularProduct(@RequestBody List<String> totalList) {
    // Your function
}

Теперь нам нужно добавить на наш другой сервер список, который мы хотим передать этому запросу, в теле запроса.

0 голосов
/ 26 апреля 2019

Существует много способов передачи информации между серверами.Самый простой способ - инициировать http-запрос, в зависимости от метода запроса get или post поместите параметры в соответствующее место: заголовок reuqest или тело запроса.Вы можете сделать как @Davide Lorenzo MARINO.Или используйте очередь сообщений, например ActiveMq.В случае того же центра регистрации вы также можете использовать @feign для его разрешения.

0 голосов
/ 26 апреля 2019

Если вы хотите передать список значений в URL-адресе, одна из возможностей - передать их в качестве параметров URL-адреса.

Вы должны создать ссылку, аналогичную следующей:

http://youserver/youraction?param=first&param=second&param=third

или

http://youserver/youraction?param=first,second,third

Ваш контроллер весной должен быть что-то вроде

@Controller 
public class MyController {

    @GetMapping("/youraction")
    public String yourAction(@RequestParam("param") List<String> params) {
       // Here params is tre list with the values first, second, third
    }
}

Это действие может обрабатывать оба типа запросов, которые я написал ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...