RestTemplate: exchange() vs postForEntity() vs execute()
Spring boot을 사용하여 Rest API를 만들고 있는데 어플리케이션의 엔드포인트에 접속해야 했습니다.나는 사용했다RestTemplate할 수 있을 것 같아요.두 가지 방법으로 할 수 있었는데
다음과 같습니다
postForEntity().responseEntity = restTemplate.postForEntity(uri, httpEntity, ResponseClass.class);다음과 같습니다
exchange().responseEntity = restTemplate.exchange(uri, HttpMethod.POST, httpEntity, ResponseClass.class);
이 두 가지 방법의 사용법과 차이점을 알고 싶습니다.
또 다른 방법도 보입니다.execute()조명 좀 비춰주세요.사용방법 및 사용시기
그RestTemplate매우 다재다능한 객체입니다.
가장 일반적인 방법이기 때문에 먼저 다음과 같이 설명하겠습니다.
execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback,
@Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables)
주의:uriVariables로서 통할 수 있다Map너무.
execute는 가능한 한 다양한 시나리오에 적용할 수 있도록 설계되어 있습니다.
- 첫 번째 파라미터와 두 번째 파라미터에서는 URL과 메서드의 유효한 조합을 사용할 수 있습니다.
- 요청은 커스텀을 전달함으로써 무수히 다양한 방법으로 수정할 수 있습니다.
RequestCallback(a)@FunctionalInterface단 한 가지 방법으로doWithRequest(ClientHttpRequest request))를 참조해 주세요. - 원격 리소스에서 반환된 응답은 커스텀을 전달함으로써 필요한 모든 방법으로 역직렬화할 수 있습니다.
ResponseExtractor.
다음 항목과 비교:
exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
Class<T> responseType, Object... uriVariables)
여기에는 두 가지 주요 차이점이 있습니다.
- 이제 통과가 가능합니다.
HttpEntity직접, 이전에는 를 사용하여 수동으로 설정할 필요가 있었습니다.RequestCallback. - 원하는 응답 유형을 전달함으로써 즉시 역직렬화 메커니즘이 제공됩니다.
Class.
보시는 바와 같이 평상시 사용하기에 훨씬 편리합니다.
및 보다 짧은 방법은 다음과 같습니다.이러한편 더 이해하기 쉬운 버전입니다.
getForEntity(String url, Class<T> responseType, Object... uriVariables)
postForEntity(String url, @Nullable Object request, Class<T> responseType,
Object... uriVariables)
공지postForEntityPOST 할 수 있게 되었습니다.Object포장지 없이 바로.퍼포먼스상의 이점이나 단점은 없습니다.execute이른바execute그냥 편의상의 문제일 뿐이죠
RestTemplate 는 HTTP 요구를 실행하는 동기 클라이언트입니다.각 HTTP 메서드의 일반적인 시나리오용 템플릿과 일반화된 HTTP 메서드용 템플릿을 제공합니다.exchange(...)그리고.execute(...)빈도가 낮은 사례를 지원하는 방법
Spring Integration 문서에는 각 방법의 사용방법이 요약되어 있습니다.
postForEntity다음을 통해 새 리소스 생성
POST응답에서 표현을 반환합니다.
exchange필요에 따라 유연성을 높일 수 있는 위의 방법을 보다 일반적이고 고집적이지 않은 버전입니다.받아들이다
RequestEntity(HTTP 방식, URL, 헤더 및 본문을 입력으로 포함)를 반환한다.ResponseEntity.하면, 「」를 할 수 .
ParameterizedTypeReferenceClass제네릭을 사용하여 반응 유형을 지정합니다.
execute콜백 인터페이스를 통한 요청 준비 및 응답 추출을 완전히 제어하여 요청을 수행하는 가장 일반적인 방법입니다.
둘 다postForEntity(...),exchange(...) ★★★★★★★★★★★★★★★★★」execute(...)메서드는 보호된 메서드를 호출하여 실제 HTTP 요청을 수행합니다.자세한 내용은 소스 코드를 확인할 수 있습니다.
실행(..)REST 콜을 발신하는 가장 원시적인 메서드 형식.
Exchange(..) 이그제큐트 메서드 위의 래퍼입니다.
PostForEntity(..) REST 콜을 발신하기 위한 래퍼 방식.요청 유형은 메서드 이름 자체(getForEntity, postForEntity)로 지정되므로 파라미터에서 요청 유형을 언급할 필요가 없습니다.메서드 이름 자체가 설명이 됩니다.
Exchange 및 postForEntity에서는 응답은 Json 형식으로 해야 합니다.이 Json은 json-mapper 라이브러리에 의해 모델 클래스로 추가로 변환됩니다.이그제큐트에서는 Response Executor 인수로 역직렬라이저를 전달하기 때문에 어떤 형식으로든 응답을 받습니다.
postForEntity와 Exchange 메서드의 구현을 보면 양쪽 모두 뒤에 있는 실행 메서드를 사용하고 있음을 알 수 있습니다.exchange 메서드를 사용하면 다양한 http 메서드를 호출할 수 있습니다.
언급URL : https://stackoverflow.com/questions/52364187/resttemplate-exchange-vs-postforentity-vs-execute
'programing' 카테고리의 다른 글
| JQuery.ajax 성공 데이터의 JSON 해석 (0) | 2023.02.27 |
|---|---|
| 각도 2의 중첩된 구성요소로 입력 전달 (0) | 2023.02.22 |
| 각도 js에서 제목을 조건부로 적용하는 방법 (0) | 2023.02.22 |
| Rails 앱 내에서 JSON API 호출하기 (0) | 2023.02.22 |
| console.log(결과)는 [Object]를 인쇄합니다.result.name에 접속하려면 어떻게 해야 하나요? (0) | 2023.02.22 |