RestTemplate get and post simple usage

RestTemplate usage

Description: restTemplate is a client tool class provided by spring that can provide access to rest services. It provides a variety of fast and remote access methods, which greatly improves the programming efficiency of the client. The complex submission of the original HttpClient is liberated.

Code example:

1. get commit

getForObject(java.lang.String, java.lang.Class<T>, java.lang.Object...)
  • client
@RestController
@RequestMapping("restTemp")
public class RestTemplateController {

    @GetMapping("getTest1")
    public void getTest1(){
        String url = "http://具体iP地址/demo/demoTest?name={name}&email={email}";
        Map<String,String> params = new HashMap<>();
        params.put("name","yyc");
        params.put("email","12306");
        RestTemplate restTemplate = new RestTemplate();
        String request = restTemplate.getForObject(url,String.class,params);
        //String request = restTemplate.getForObject(url,String.class,"yyc","email");
        System.out.println(request);
    }
}

*Server

@GetMapping(value = "demoTest", produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest(@RequestParam String name,@RequestParam String email){
        System.out.println(name);
        System.out.println(email);
        return "success";
    }
getForEntity(java.lang.String, java.lang.Class<T>, java.lang.Object...)
  • client

@GetMapping("getTest2")
    public void getTest2(){
        String url = "http://具体iP地址:8080/demo/demoTest?name={name}&email={email}";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone","123456");
        Map<String,Object> params = new HashMap<>();
        params.put("name","yyc");
        params.put("email","12306");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(headers);
        ResponseEntity<String> request = restTemplate.getForEntity(url,String.class,httpEntity,params);
        System.out.println(request.getBody());
    }
  • Server
@GetMapping(value = "demoTest1", produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest1(@RequestParam String name, @RequestParam String email, @RequestHeader String phone){
        System.out.println(name);
        System.out.println(email);
        System.out.println(phone);
        return "success";
    }

2. post request

public <T> T postForObject(java.lang.String url, @Nullable java.lang.Object request, java.lang.Class<T> responseType, java.lang.Object... uriVariables) throws RestClientException

  • entity class
public class User {

    private String name;

    private String email;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  • Server
@PostMapping(value = "demoTest2", consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest2(@RequestBody User user, @RequestHeader String phone){
        System.out.println(user.getName());
        System.out.println(user.getEmail());
        System.out.println(phone);
        return "success";
    }
  • client
@PostMapping("postTest1")
    public void postTest1() {
        String url = "http://IP:8080/demo/demoTest2";
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.set("phone", "123456");
        Map<String, Object> params = new HashMap<>();
        params.put("name", "yyc");
        params.put("email", "12306");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params,headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity,String.class);
        System.out.println(request.getBody());
    }

in

MultiValueMap<String, Object> paramsMap = new LinkedMultiValueMap<>();

When all passed data types are complex data types: headers.setContentType(MediaType.MULTIPART_FORM_DATA);

And the parameters that need to be accepted are no longer mapped in the entity class.

MultiValueMap to pass.

E.g:

  • Server
@PostMapping(value = "demoTest3",produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest3(@RequestParam String  name,String email, @RequestHeader String phone){
        System.out.println(name);
        System.out.println(email);
        System.out.println(phone);
        return "success";
    }

Among them, the parameters of the server are of type @RequestHeader, and the type of the parameter that requires the request header information is not accepted by the entity class, and needs to be encapsulated with a complex type of map.

  • client
@PostMapping("postTest2")
    public void postTest2() {
        String url = "http://ip:8080/demo/demoTest3";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone", "1234567");
        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
        params.add("name", "yyc");
        params.add("email", "123067");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
        System.out.println(request.getBody());
    }
Example three

Both entity classes and normal parameters

E.g:

  • Server
@PostMapping(value = "demoTest4",produces = MediaType.APPLICATION_JSON_VALUE)
    public String demoTest4(@RequestBody User user,String sex, @RequestHeader String phone){
        System.out.println(user.getName());
        System.out.println(user.getEmail());
        System.out.println(sex);
        System.out.println(phone);
        return "success";
    }
  • client
@PostMapping("postTest3")
    public void postTest3() {
        String url = "http://ip:8080/demo/demoTest4?sex={sex}";
        HttpHeaders headers = new HttpHeaders();
        headers.set("phone", "1234567");
        Map<String, Object> params = new HashMap<>();
        params.put("name", "yyc");
        params.put("email", "123067");
        Map<String,Object> other = new HashMap<>();
        other.put("sex","男");
        RestTemplate restTemplate = new RestTemplate();
        HttpEntity httpEntity = new HttpEntity(params, headers);
        ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class,other);
        System.out.println(request.getBody());
    }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325180570&siteId=291194637