RestTemplate 사용 상세 설명

28136 단어 SpringBoot
요약 RestTemplate:
Spring 은 클 라 이언 트 엔 드 를 동기 화 하 는 핵심 클래스 로 http 서비스 와 의 통신 을 간소화 하고 Restful 원칙 을 만족 시 키 며 프로그램 코드 는 URL 을 제공 하고 결 과 를 추출 할 수 있 습 니 다.기본적으로 RestTemplate 는 jdk 의 HTTP 연결 도구 에 의존 합 니 다.물론 setRequestFactory 속성 을 통 해 다른 HTTP 소스 로 전환 할 수 있 습 니 다.예 를 들 어 Apache HttpComponents,Netty,OkHttp 등 입 니 다.
getForObject()방법
public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables){}
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables)
public <T> T getForObject(URI url, Class<T> responseType)
//provider
@GetMapping("/addUser/{userid}/{username}")
    public Map<String,Object> addUser(@PathVariable("userid")Integer userid,
                                      @PathVariable("username") String username){
        Map<String,Object> map = new HashMap<>();
        map.put("userid",userid);
        map.put("username",username);
        return map;
    }
//consumer 
//  1:   url    
 @GetMapping("/getForObject1")
    public Map<String,Object> getForObject1(){
        Map map = restTemplate.getForObject("http://127.0.0.1:8080/addUser/100/  ", Map.class);
        return map;
    }
//consumer
//  2:  {}    
@GetMapping("/getForObject2")
    public Map<String,Object> getForObject2(){
        //url,     ,url    
        Map map = restTemplate.getForObject("http://127.0.0.1:9090/addUser/{1}/{2}", Map.class,100,"  ");
        return map;
    }
//consumer
//  3:   map,       map  key    
@GetMapping("/getForObject3")
    public Map<String,Object> getForObject3(){
        Map<String, Object> params = new HashMap<>();
        params.put("userid",99);
        params.put("username","  ");
        //map  key url        
        Map map = restTemplate.getForObject("http://127.0.0.1:9090/addUser/{userid}/{username}", Map.class,params);
        return map;
    }

getForEntity()방법
public <T> T getForEntity(String url, Class<T> responseType, Object... uriVariables){}
public <T> T getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables)
public <T> T getForEntity(URI url, Class<T> responseType)

getForEntity()용법 은 getForObject 와 같 지만 getForEntity 의 반환 값 은 ResponseEntity 입 니 다.ResponseEntity 는 Spring 이 HTTP 요청 에 응답 하 는 패키지 로 응답 코드,contentType,contentLength,응답 체 등 몇 가지 중요 한 요 소 를 포함 합 니 다.
postForObject()방법
public <T> T getForObject(String url, Object request, Class<T> responseType, Object... uriVariables){}
public <T> T getForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
public <T> T getForObject(URI url, Object request, Class<T> responseType)

대상 을 매개 변수 로 하 다
//provider
@PostMapping("/user")
    public String addUser(@RequestBody UserVo userVo){
        //userVo      
        System.out.println(userVo);
        return "OK";
    }
//consumer
 @RequestMapping("/add")
public String add(){
    HttpHeaders headers = new HttpHeaders();
    //       json
    headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
    //        
    UserVo userVo = new UserVo();
    userVo.setId(111);
    userVo.setName("  ");
    HttpEntity<UserVo> request = new HttpEntity<>(userVo, headers);
    String s = restTemplate.postForObject("http://127.0.0.1:9090/user", request, String.class);
    return  s;
}

map 형식 을 매개 변수 로
//provider
@PostMapping("/user2")
public String addUser(@RequestBody Map<String,Object> map){
    //  : map     json,         
    Object token = map.get("token");
    Object userVo = map.get("userVo");
    System.out.println(userVo);
    System.out.println(token);
    return "OK";
}
//consumer
@RequestMapping("/add2")
    public String add2(){
        HttpHeaders headers = new HttpHeaders();
        //       json
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        //        
        UserVo userVo = new UserVo();
        userVo.setId(111);
        userVo.setName("  ");
        LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
        map.add("userVo",userVo);
        map.add("token","asedfasdfase");
        HttpEntity<LinkedMultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
        String s = restTemplate.postForObject("http://127.0.0.1:9090/user2", request, String.class);
        return  s;
    }

postForEntity()방법
public <T> T getForEntity(String url, Object request, Class<T> responseType, Object... uriVariables){}
public <T> T getForEntity(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables)
public <T> T getForEntity(URI url, Object request, Class<T> responseType)

postForEntity()의 용법 은 getForObject 와 같 지만 psotForEntity 의 반환 값 은 ResponseEntity 입 니 다.ResponseEntity 는 Spring 이 HTTP 요청 에 응답 하 는 패키지 로 응답 코드,contentType,contentLength,응답 체 등 몇 가지 중요 한 요 소 를 포함 합 니 다.

좋은 웹페이지 즐겨찾기