我整个上午都在搜寻,我想我缺少了一些东西。
我有一个Spring Boot控制器,带有一种保存客户端的方法。
这是方法:
// 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中创建客户端对象。
我感到很迷茫,因为我可以看到有些问题,但是我不知道这是什么。
答案 0 :(得分: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-decoding或https://www.baeldung.com/rest-template,您就可以轻松地找到有关标准做法的更多信息。