web-dev-qa-db-fra.com

Spring / RestTemplate - Entité PUT vers le serveur

Veuillez regarder ce code simple:

final String url = String.format("%s/api/shop", Global.webserviceUrl);

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

HttpHeaders headers = new HttpHeaders();
headers.set("X-TP-DeviceID", Global.deviceID);
HttpEntity entity = new HttpEntity(headers);

HttpEntity<Shop[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, Shop[].class);
shops = response.getBody();

Comme vous pouvez le voir, le code ci-dessus est destiné à OBTENIR la liste des boutiques à partir du serveur (au format json) et à mapper la réponse au tableau des objets Shop. Maintenant, je dois mettre une nouvelle boutique, par exemple sous/api/shop/1. L'entité de demande doit avoir exactement le même format que celui renvoyé.

Dois-je ajouter/1 à mon URL, créer un nouvel objet de classe Shop, avec tous les champs remplis de mes valeurs que je veux mettre, puis utiliser l'échange avec HttpMethod.PUT?

S'il vous plaît, clarifiez-le pour moi, je suis débutant avec Spring. Un exemple de code serait apprécié.

[edit] Je suis double confus, car je viens de remarquer également la méthode RestTemplate.put (). Alors, lequel dois-je utiliser? Échanger ou mettre ()?

13
user1209216

Vous pouvez essayer quelque chose comme:

    final String url = String.format("%s/api/shop/{id}", Global.webserviceUrl);

    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

    HttpHeaders headers = new HttpHeaders();
    headers.set("X-TP-DeviceID", Global.deviceID);
    Shop shop= new Shop();
    Map<String, String> param = new HashMap<String, String>();
    param.put("id","10")
    HttpEntity<Shop> requestEntity = new HttpEntity<Shop>(shop, headers);
    HttpEntity<Shop[]> response = restTemplate.exchange(url, HttpMethod.PUT, requestEntity, Shop[].class, param);

    shops = response.getBody();

le put retourne vide alors que l'échange vous obtiendrait une réponse, le meilleur endroit pour vérifier serait la documentation https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/ client/RestTemplate.html

22
cpd214