Rest APIでサーバ-クライアント間でString文字列を受け渡したいRest APIでサーバ-クライアント間でStringを受け渡したい
Rest APIのサーバ-クライアント間通信でクエリパラメタでなく、別の方法でString型の文字列を受け渡したいです。
試したソース
クライアント側
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PLAIN_TEXT);
String sendparam = "test";
HttpEntity<String> request = new HttpEntity<String,>(sendparm, headers);
restTemplate.postForObject( url, request , String.class);
サーバ側
@RequestMapping(value="/test",consumes=MediaType.APPLICATION_PLAIN_TEXT,METHOD="POST")
public void testPost(@ResponseBody HttpEntity<String> request) {
String receiveParam = request.getBody;
}
サーバ側のreceiveparamにsendparamの内容を受け渡したいですが、上手く動作しませんでした。
ご指摘や参考になるURLなどご教示いただけたら幸いです。
-
クリップを取り消します
-
checkベストアンサー
+1
書き方が微妙に異なっている部分があるようです。
RestTemplate使う場合、Spring2系であればもう少し単純に記述できます。
import java.util.List;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
/**
* @author a-pz
*
*/
@RestController
@RequiredArgsConstructor
@Log4j2
public class HttpClientController {
@GetMapping("sender")
public String sender() {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("param", "1");
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(map, headers);
ResponseEntity<String> response =
restTemplate.postForEntity("http://127.0.0.1:8080/receiver", entity, String.class);
String result = response.getBody();
return result;
}
@PostMapping("receiver")
public String receiver(@RequestBody Receive bodyParameters) {
log.info(bodyParameters);
return bodyParameters.toString();
}
@Data
public static class Receive {
private List<String> param;
}
}
実行結果
HttpClientController.Receive(param=[1])投稿