次の簡単なコードをご覧ください。
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();
ご覧のとおり、上記のコードはサーバーからショップのリストを取得し(json形式)、レスポンスをShopオブジェクトの配列にマップすることを目的としています。次に、たとえば/ api/shop/1のように、新しいショップをPUTする必要があります。リクエストエンティティは、返されたものとまったく同じ形式である必要があります。
/ 1をURLに追加し、新しいShopクラスオブジェクトを作成します。すべてのフィールドに値を入力し、HttpMethod.PUTとの交換を使用しますか?
私のために明確にしてください、私は春の初心者です。コード例をいただければ幸いです。
[編集] RestTemplate.put()メソッドにも気付いたので、私は二重に混乱しています。それで、どれを使うべきですか?交換またはput()?
次のようなものを試すことができます:
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();
putはvoidを返しますが、交換は応答を受け取るため、チェックするのに最適な場所はドキュメントです https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/ client/RestTemplate.html