Использовать метод Post Rest + SpringBoot - PullRequest
0 голосов
/ 09 декабря 2018

Я искал все утро и думаю, что что-то упустил.
У меня есть загрузочный контроллер Spring с методом для сохранения клиента.
Это метод:

// ajouter un client
@RequestMapping(value="/AjoutClient/{clientData}", method=RequestMethod.POST)
public String AjoutClient(@PathVariable String clientData) {

    Client c = new Client();
    c.setNomClient(clientData.split(";")[0]);
    c.setPrenomClient(clientData.split(";")[1]);
    c.setAdresseClient(clientData.split(";")[2]);
    c.setTelClient(clientData.split(";")[3]);
    c.setEmailClient(clientData.split(";")[4]);
    c.setCinClient(clientData.split(";")[5]);

    client.save(c);
    return "test";
}

Я хочу использовать этот метод из другого приложения с этим методом:

@RequestMapping(value="/ajoutClient", method=RequestMethod.POST)
 public void ajout(@RequestParam("nom") String nom,@RequestParam("prenom") String prenom,@RequestParam("adr") String adr,@RequestParam("tel") String tel,@RequestParam("mail") String mail,@RequestParam("cin") String cin) {

    String ClientData=nom+";"+prenom+";"+adr+";"+tel+";"+mail+";"+cin;

     RestTemplate restTemplate = new RestTemplate();

     HttpEntity<String> request = new HttpEntity<>(new String(ClientData));
     ResponseEntity<String> response = restTemplate
       .exchange("http://localhost:9093/AjoutClient/"+ClientData, HttpMethod.POST, request, String.class);

     assertThat(response.getStatusCode(), is(HttpStatus.CREATED));

  }

** экспликация: я получаю значения из формы и создаю строку с этими значениями, затем пытаюсь отправить эту строку вмой clientController.
PS: я не могу отправить клиентский объект, я должен отправить значения одно за другим, а затем создать клиентский объект в clientController.
Я чувствую себя довольно потерянным, потому что я вижу, что что-тонеправильно, но я не знаю, что это.

1 Ответ

0 голосов
/ 09 декабря 2018

Прежде всего, я бы посоветовал вам не использовать @PathVariable для передачи таких данных.Вы уже отправляете все в теле запроса, поэтому первым шагом нужно изменить:

public String AjoutClient(@PathVariable String clientData) {

на

public String AjoutClient(@RequestBody String clientData) {

и

restTemplate.exchange("http://localhost:9093/AjoutClient/" + ClientData, HttpMethod.POST, request, String.class);

на

restTemplate.exchange("http://localhost:9093/AjoutClient", HttpMethod.POST, request, String.class);

Тогда, если вы ожидаете статус 201, вы должны вернуть его:

public ResponseEntity<String> AjoutClient(@RequestBody String clientData) {
    ...
    return ResponseEntity.created(null).body("test");
}

PS: Пожалуйста, обратите внимание на то, что @JB Nizetупоминается, потому что у него есть точка здесь.Просто исследуйте эти ключевые слова (Google их) или прочитайте некоторые учебники, например, https://www.baeldung.com/java-url-encoding-decoding или https://www.baeldung.com/rest-template, и вы легко узнаете больше о стандартных методах.

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