首页 文章

使用Post方法Rest SpringBoot

提问于
浏览
0

我整个上午一直在寻找,我想我错过了一些东西 .
我有一个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

    首先,我建议你避免使用 @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-decodinghttps://www.baeldung.com/rest-template,您就可以轻松找到有关标准做法的更多信息 .

相关问题