RestController'da eğer ki biz client tarafından verilen header'i almak istersek @RequestHeader annotationunu kullanıyoruz.

Eğer ki Cookie'yi almak istersek @CookieValue isimli annotationu kullanıyoruz.


REST Tarafı


TransferResource.java

@RestController
public class TransferResource {
    @GetMapping("/transfer/header")
    public ResponseEntity<?> getHeader(@RequestHeader("input") String input){
        String header = "Gelen : "+input;
        return ResponseEntity
                .status(HttpStatus.OK)
                .body(header);
    }
    @GetMapping("/transfer/cookie")
    public ResponseEntity<?> getCookie(@CookieValue(value = "input") String cookie){
        String cookieGelen = "Gelen cookie : "+cookie;
        return ResponseEntity
                .status(HttpStatus.OK)
                .body(cookieGelen);
    }
}


Client Tarafı


@Controller
public class TransferController {
    
    @GetMapping("/transfer/setheader")
    @ResponseBody
    public String setHeader(){
        String url = " http://localhost:8080/transfer/header";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeader = new HttpHeaders();
        httpHeader.add("input", "Kerem");
        HttpEntity entity = new HttpEntity(httpHeader);
        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
        String body = response.getBody();
        return "Gelen body : "+body;
    }
    
    @GetMapping("/transfer/setcookie")
    @ResponseBody
    public String getCookie(){
        String url = " http://localhost:8080/transfer/cookie";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeader = new HttpHeaders();
        httpHeader.add(HttpHeaders.COOKIE, "input=KeremCookie");
        HttpEntity httpEntity = new HttpEntity(httpHeader);
        ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);
        return result.getBody();
    }
}


Header için çıktı

Cookie için çıktı


Eğer ki üsttekinin tersini yani REST tarafı bu sefer Header ve Cookie'yi ayarlasın ve Client alsın istersek.

Header için REST TARAFI

@GetMapping("/transfer/setrestheader")
public ResponseEntity<?> setrestHeader(){
    HttpHeaders httpHeader = new HttpHeaders();
    httpHeader.add("input", "Rest'ten ayarlanan header");
    return ResponseEntity
            .status(HttpStatus.OK)
            .headers(httpHeader)
            .body("Okey geldi");
}

Header için CLİENT TARAFI

@GetMapping("/transfer/getheader")
@ResponseBody
public String getHeader(){
    String url = " http://localhost:8080/transfer/setrestheader";
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET,HttpEntity.EMPTY,String.class);
    return "Restten gelen body : "+response.getBody()+" header : "+response.getHeaders().getFirst("input");
}


Cookie için REST TARAFI

@GetMapping("/transfer/setrestcookie")
    public ResponseEntity<?> setrestCookie(){
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add(HttpHeaders.COOKIE, "RESTCOOKIE");
        return ResponseEntity
                .status(HttpStatus.OK)
                .headers(httpHeaders)
                .body("Cookie gitti");
    }


Cookie için CLIENT TARAFI

@GetMapping("/transfer/getcookie")
    @ResponseBody
    public String getCookieFromRest(){
        String url = " http://localhost:8080/transfer/setrestcookie";
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.exchange(url,HttpMethod.GET,HttpEntity.EMPTY,String.class);
        return "Restten gelen body : "+response.getBody()+" cookie "+response.getHeaders().getFirst(HttpHeaders.COOKIE);
    }