springboot restTemplate 使用说明
springboot restTemplate 使用说明
#
***********************
相关类与接口
RestTemplate
public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
private static final boolean romePresent;
private static final boolean jaxb2Present;
private static final boolean jackson2Present;
private static final boolean jackson2XmlPresent;
private static final boolean jackson2SmilePresent;
private static final boolean jackson2CborPresent;
private static final boolean gsonPresent;
private static final boolean jsonbPresent;
private final List<HttpMessageConverter<?>> messageConverters;
private ResponseErrorHandler errorHandler;
private UriTemplateHandler uriTemplateHandler;
private final ResponseExtractor<HttpHeaders> headersExtractor;
***********
构造方法
public RestTemplate() {
this.messageConverters = new ArrayList();
this.errorHandler = new DefaultResponseErrorHandler();
this.headersExtractor = new RestTemplate.HeadersExtractor();
this.messageConverters.add(new ByteArrayHttpMessageConverter());
this.messageConverters.add(new StringHttpMessageConverter());
this.messageConverters.add(new ResourceHttpMessageConverter(false));
try {
this.messageConverters.add(new SourceHttpMessageConverter());
} catch (Error var2) {
}
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
if (romePresent) {
this.messageConverters.add(new AtomFeedHttpMessageConverter());
this.messageConverters.add(new RssChannelHttpMessageConverter());
}
if (jackson2XmlPresent) {
this.messageConverters.add(new MappingJackson2XmlHttpMessageConverter());
} else if (jaxb2Present) {
this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
}
if (jackson2Present) {
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
} else if (gsonPresent) {
this.messageConverters.add(new GsonHttpMessageConverter());
} else if (jsonbPresent) {
this.messageConverters.add(new JsonbHttpMessageConverter());
}
if (jackson2SmilePresent) {
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
}
if (jackson2CborPresent) {
this.messageConverters.add(new MappingJackson2CborHttpMessageConverter());
}
this.uriTemplateHandler = initUriTemplateHandler();
}
public RestTemplate(ClientHttpRequestFactory requestFactory) {
this();
this.setRequestFactory(requestFactory);
}
public RestTemplate(List<HttpMessageConverter<?>> messageConverters) {
this.messageConverters = new ArrayList();
this.errorHandler = new DefaultResponseErrorHandler();
this.headersExtractor = new RestTemplate.HeadersExtractor();
this.validateConverters(messageConverters);
this.messageConverters.addAll(messageConverters);
this.uriTemplateHandler = initUriTemplateHandler();
}
***********
普通方法
private static DefaultUriBuilderFactory initUriTemplateHandler() {
DefaultUriBuilderFactory uriFactory = new DefaultUriBuilderFactory();
uriFactory.setEncodingMode(EncodingMode.URI_COMPONENT);
return uriFactory;
}
public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
private void validateConverters(List<HttpMessageConverter<?>> messageConverters) {
public List<HttpMessageConverter<?>> getMessageConverters() {
public void setErrorHandler(ResponseErrorHandler errorHandler) {
public ResponseErrorHandler getErrorHandler() {
public void setDefaultUriVariables(Map<String, ?> uriVars) {
public void setUriTemplateHandler(UriTemplateHandler handler) {
public UriTemplateHandler getUriTemplateHandler() {
************
get 方法
public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType) throws RestClientException {
************
post 方法
public URI postForLocation(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
public URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
public URI postForLocation(URI url, @Nullable Object request) throws RestClientException {
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
************
put 方法
public void put(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
public void put(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
public void put(URI url, @Nullable Object request) throws RestClientException {
************
delete 方法
public void delete(String url, Object... uriVariables) throws RestClientException {
public void delete(String url, Map<String, ?> uriVariables) throws RestClientException {
public void delete(URI url) throws RestClientException {
************
head 方法
public HttpHeaders headForHeaders(String url, Object... uriVariables) throws RestClientException {
public HttpHeaders headForHeaders(String url, Map<String, ?> uriVariables) throws RestClientException {
public HttpHeaders headForHeaders(URI url) throws RestClientException {
************
patch方法
public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> T patchForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
************
options 方法
public Set<HttpMethod> optionsForAllow(String url, Object... uriVariables) throws RestClientException {
public Set<HttpMethod> optionsForAllow(String url, Map<String, ?> uriVariables) throws RestClientException {
public Set<HttpMethod> optionsForAllow(URI url) throws RestClientException {
************
exchange 方法
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException {
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException {
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
//httpEntity自定义请求头,路径及参数可直接设置
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
************
execute 方法
public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
public <T> T execute(URI url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
************
其他方法
protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
public <T> RequestCallback acceptHeaderRequestCallback(Class<T> responseType) {
public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody) {
public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody, Type responseType) {
public <T> ResponseExtractor<ResponseEntity<T>> responseEntityExtractor(Type responseType) {
protected ResponseExtractor<HttpHeaders> headersExtractor() {
private static <T> T nonNull(@Nullable T result) {
static {
ClassLoader classLoader = RestTemplate.class.getClassLoader();
romePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader);
jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);
jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);
jackson2CborPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader);
gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);
}
**************
内部类:Resttemplate.HeadersExtractor
private static class HeadersExtractor implements ResponseExtractor<HttpHeaders> {
private HeadersExtractor() {
}
public HttpHeaders extractData(ClientHttpResponse response) {
return response.getHeaders();
}
}
**************
内部类:Resttemplate.ResponseEntityResponseExtractor
private class ResponseEntityResponseExtractor<T> implements ResponseExtractor<ResponseEntity<T>> {
@Nullable
private final HttpMessageConverterExtractor<T> delegate;
public ResponseEntityResponseExtractor(@Nullable Type responseType) {
public ResponseEntity<T> extractData(ClientHttpResponse response) throws IOException {
**************
内部类:Resttemplate.HttpEntityRequestCallback
private class HttpEntityRequestCallback extends RestTemplate.AcceptHeaderRequestCallback {
private final HttpEntity<?> requestEntity;
public HttpEntityRequestCallback(@Nullable Object requestBody) {
public HttpEntityRequestCallback(@Nullable Object requestBody, @Nullable Type responseType) {
public void doWithRequest(ClientHttpRequest httpRequest) throws IOException {
private void logBody(Object body, @Nullable MediaType mediaType, HttpMessageConverter<?> converter) {
**************
内部类:Resttemplate.AcceptHeaderRequestCallback
private class AcceptHeaderRequestCallback implements RequestCallback {
@Nullable
private final Type responseType;
public AcceptHeaderRequestCallback(@Nullable Type responseType) {
public void doWithRequest(ClientHttpRequest request) throws IOException {
private boolean canReadResponse(Type responseType, HttpMessageConverter<?> converter) {
private Stream<MediaType> getSupportedMediaTypes(HttpMessageConverter<?> messageConverter) {
RestOperations
public interface RestOperations {
***********
get 方法
<T> T getForObject(String var1, Class<T> var2, Object... var3) throws RestClientException;
<T> T getForObject(String var1, Class<T> var2, Map<String, ?> var3) throws RestClientException;
<T> T getForObject(URI var1, Class<T> var2) throws RestClientException;
<T> ResponseEntity<T> getForEntity(String var1, Class<T> var2, Object... var3) throws RestClientException;
<T> ResponseEntity<T> getForEntity(String var1, Class<T> var2, Map<String, ?> var3) throws RestClientException;
<T> ResponseEntity<T> getForEntity(URI var1, Class<T> var2) throws RestClientException;
***********
post 方法
URI postForLocation(String var1, @Nullable Object var2, Object... var3) throws RestClientException;
URI postForLocation(String var1, @Nullable Object var2, Map<String, ?> var3) throws RestClientException;
URI postForLocation(URI var1, @Nullable Object var2) throws RestClientException;
<T> T postForObject(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
<T> T postForObject(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
<T> T postForObject(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
<T> ResponseEntity<T> postForEntity(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
<T> ResponseEntity<T> postForEntity(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
<T> ResponseEntity<T> postForEntity(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
***********
put 方法
void put(String var1, @Nullable Object var2, Object... var3) throws RestClientException;
void put(String var1, @Nullable Object var2, Map<String, ?> var3) throws RestClientException;
void put(URI var1, @Nullable Object var2) throws RestClientException;
***********
delete 方法
void delete(String var1, Object... var2) throws RestClientException;
void delete(String var1, Map<String, ?> var2) throws RestClientException;
void delete(URI var1) throws RestClientException;
***********
head方法
HttpHeaders headForHeaders(String var1, Object... var2) throws RestClientException;
HttpHeaders headForHeaders(String var1, Map<String, ?> var2) throws RestClientException;
HttpHeaders headForHeaders(URI var1) throws RestClientException;
***********
patch 方法
<T> T patchForObject(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
<T> T patchForObject(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
<T> T patchForObject(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
***********
options 方法
Set<HttpMethod> optionsForAllow(String var1, Object... var2) throws RestClientException;
Set<HttpMethod> optionsForAllow(String var1, Map<String, ?> var2) throws RestClientException;
Set<HttpMethod> optionsForAllow(URI var1) throws RestClientException;
***********
exchange 方法
<T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4, Object... var5) throws RestClientException;
<T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4, Map<String, ?> var5) throws RestClientException;
<T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4, Object... var5) throws RestClientException;
<T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4, Map<String, ?> var5) throws RestClientException;
<T> ResponseEntity<T> exchange(URI var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4) throws RestClientException;
<T> ResponseEntity<T> exchange(URI var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4) throws RestClientException;
<T> ResponseEntity<T> exchange(RequestEntity<?> var1, Class<T> var2) throws RestClientException;
<T> ResponseEntity<T> exchange(RequestEntity<?> var1, ParameterizedTypeReference<T> var2) throws RestClientException;
***********
execute 方法
<T> T execute(String var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4, Object... var5) throws RestClientException;
<T> T execute(String var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4, Map<String, ?> var5) throws RestClientException;
<T> T execute(URI var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4) throws RestClientException;
InterceptingHttpAccessor:拦截器设置
public abstract class InterceptingHttpAccessor extends HttpAccessor {
private final List<ClientHttpRequestInterceptor> interceptors = new ArrayList();
@Nullable
private volatile ClientHttpRequestFactory interceptingRequestFactory;
public InterceptingHttpAccessor() {
}
public void setInterceptors(List<ClientHttpRequestInterceptor> interceptors) {
public List<ClientHttpRequestInterceptor> getInterceptors() {
public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
public ClientHttpRequestFactory getRequestFactory() {
HttpAccessor
public abstract class HttpAccessor {
protected final Log logger = HttpLogging.forLogName(this.getClass());
private ClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
private final List<ClientHttpRequestInitializer> clientHttpRequestInitializers = new ArrayList();
public HttpAccessor() {
}
public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
Assert.notNull(requestFactory, "ClientHttpRequestFactory must not be null");
this.requestFactory = requestFactory;
}
public ClientHttpRequestFactory getRequestFactory() {
return this.requestFactory;
}
public void setClientHttpRequestInitializers(List<ClientHttpRequestInitializer> clientHttpRequestInitializers) {
if (this.clientHttpRequestInitializers != clientHttpRequestInitializers) {
this.clientHttpRequestInitializers.clear();
this.clientHttpRequestInitializers.addAll(clientHttpRequestInitializers);
AnnotationAwareOrderComparator.sort(this.clientHttpRequestInitializers);
}
}
public List<ClientHttpRequestInitializer> getClientHttpRequestInitializers() {
return this.clientHttpRequestInitializers;
}
protected ClientHttpRequest createRequest(URI url, HttpMethod method) throws IOException {
ClientHttpRequest request = this.getRequestFactory().createRequest(url, method);
this.initialize(request);
if (this.logger.isDebugEnabled()) {
this.logger.debug("HTTP " + method.name() + " " + url);
}
return request;
}
private void initialize(ClientHttpRequest request) {
this.clientHttpRequestInitializers.forEach((initializer) -> {
initializer.initialize(request);
});
}
}
ClientHttpRequestInterceptor:拦截器接口
@FunctionalInterface
public interface ClientHttpRequestInterceptor {
ClientHttpResponse intercept(HttpRequest var1, byte[] var2, ClientHttpRequestExecution var3) throws IOException;
}
ClientHttpRequestExecution:拦截器执行接口
@FunctionalInterface
public interface ClientHttpRequestExecution {
ClientHttpResponse execute(HttpRequest var1, byte[] var2) throws IOException;
}
RequestEntity
public class RequestEntity<T> extends HttpEntity<T> {
@Nullable
private final HttpMethod method;
private final URI url;
@Nullable
private final Type type;
*************
构造方法
public RequestEntity(HttpMethod method, URI url) {
public RequestEntity(@Nullable T body, HttpMethod method, URI url) {
public RequestEntity(@Nullable T body, HttpMethod method, URI url, Type type) {
public RequestEntity(MultiValueMap<String, String> headers, HttpMethod method, URI url) {
public RequestEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, @Nullable HttpMethod method, URI url) {
public RequestEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, @Nullable HttpMethod method, URI url, @Nullable Type type) {
*************
普通方法
public static RequestEntity.BodyBuilder method(HttpMethod method, URI url) {
public static RequestEntity.BodyBuilder post(URI url) {
public static RequestEntity.BodyBuilder put(URI url) {
public static RequestEntity.BodyBuilder patch(URI url) {
public static RequestEntity.HeadersBuilder<?> get(URI url) {
public static RequestEntity.HeadersBuilder<?> head(URI url) {
public static RequestEntity.HeadersBuilder<?> delete(URI url) {
public static RequestEntity.HeadersBuilder<?> options(URI url) {
public HttpMethod getMethod() {
public URI getUrl() {
public Type getType() {
public boolean equals(@Nullable Object other) {
public int hashCode() {
public String toString() {
*************
内部类:RequestEntity.DefaultBodyBuilder
private static class DefaultBodyBuilder implements RequestEntity.BodyBuilder {
private final HttpMethod method;
private final URI url;
private final HttpHeaders headers = new HttpHeaders();
public DefaultBodyBuilder(HttpMethod method, URI url) {
public RequestEntity.BodyBuilder header(String headerName, String... headerValues) {
public RequestEntity.BodyBuilder headers(@Nullable HttpHeaders headers) {
public RequestEntity.BodyBuilder headers(Consumer<HttpHeaders> headersConsumer) {
public <T> RequestEntity<T> body(T body) {
public <T> RequestEntity<T> body(T body, Type type) {
public RequestEntity.BodyBuilder accept(MediaType... acceptableMediaTypes) {
public RequestEntity.BodyBuilder acceptCharset(Charset... acceptableCharsets) {
public RequestEntity.BodyBuilder contentLength(long contentLength) {
public RequestEntity.BodyBuilder contentType(MediaType contentType) {
public RequestEntity.BodyBuilder ifModifiedSince(ZonedDateTime ifModifiedSince) {
public RequestEntity.BodyBuilder ifModifiedSince(Instant ifModifiedSince) {
public RequestEntity.BodyBuilder ifModifiedSince(long ifModifiedSince) {
public RequestEntity.BodyBuilder ifNoneMatch(String... ifNoneMatches) {
public RequestEntity<Void> build() {
*************
内部接口:RequestEntity.BodyBuilder
public interface BodyBuilder extends RequestEntity.HeadersBuilder<RequestEntity.BodyBuilder> {
RequestEntity.BodyBuilder contentLength(long var1);
RequestEntity.BodyBuilder contentType(MediaType var1);
<T> RequestEntity<T> body(T var1);
<T> RequestEntity<T> body(T var1, Type var2);
*************
内部接口:RequestEntity.HeadersBuilder
public interface HeadersBuilder<B extends RequestEntity.HeadersBuilder<B>> {
B header(String var1, String... var2);
B headers(@Nullable HttpHeaders var1);
B headers(Consumer<HttpHeaders> var1);
B accept(MediaType... var1);
B acceptCharset(Charset... var1);
B ifModifiedSince(ZonedDateTime var1);
B ifModifiedSince(Instant var1);
B ifModifiedSince(long var1);
B ifNoneMatch(String... var1);
RequestEntity<Void> build();
ResponseEntity
public class ResponseEntity<T> extends HttpEntity<T> {
private final Object status;
**********
构造方法
public ResponseEntity(HttpStatus status) {
public ResponseEntity(@Nullable T body, HttpStatus status) {
public ResponseEntity(MultiValueMap<String, String> headers, HttpStatus status) {
public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) {
private ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, Object status) {
**********
普通方法
public HttpStatus getStatusCode() {
public int getStatusCodeValue() {
public boolean equals(@Nullable Object other) {
public int hashCode() {
public String toString() {
public static ResponseEntity.BodyBuilder status(HttpStatus status) {
public static ResponseEntity.BodyBuilder status(int status) {
return new ResponseEntity.DefaultBuilder(status);
}
public static ResponseEntity.BodyBuilder ok() {
public static <T> ResponseEntity<T> ok(T body) {
public static <T> ResponseEntity<T> of(Optional<T> body) {
public static ResponseEntity.BodyBuilder created(URI location) {
public static ResponseEntity.BodyBuilder accepted() {
public static ResponseEntity.BodyBuilder badRequest() {
public static ResponseEntity.BodyBuilder unprocessableEntity() {
public static ResponseEntity.HeadersBuilder<?> noContent() {
public static ResponseEntity.HeadersBuilder<?> notFound() {
**********
内部类:ResponseEntity.DefaultBuilder
private static class DefaultBuilder implements ResponseEntity.BodyBuilder {
private final Object statusCode;
private final HttpHeaders headers = new HttpHeaders();
public DefaultBuilder(Object statusCode) {
this.statusCode = statusCode;
}
public ResponseEntity.BodyBuilder header(String headerName, String... headerValues) {
public ResponseEntity.BodyBuilder headers(Consumer<HttpHeaders> headersConsumer) {
public <T> ResponseEntity<T> body(@Nullable T body) {
public ResponseEntity.BodyBuilder contentLength(long contentLength) {
public ResponseEntity.BodyBuilder contentType(MediaType contentType) {
public ResponseEntity.BodyBuilder lastModified(ZonedDateTime date) {
public ResponseEntity.BodyBuilder lastModified(Instant date) {
public ResponseEntity.BodyBuilder lastModified(long date) {
public ResponseEntity.BodyBuilder location(URI location) {
public ResponseEntity.BodyBuilder allow(HttpMethod... allowedMethods) {
public ResponseEntity.BodyBuilder cacheControl(CacheControl cacheControl) {
public ResponseEntity.BodyBuilder varyBy(String... requestHeaders) {
public ResponseEntity.BodyBuilder eTag(String etag) {
public <T> ResponseEntity<T> build() {
**********
内部类:ResponseEntity.BodyBuilder
public interface BodyBuilder extends ResponseEntity.HeadersBuilder<ResponseEntity.BodyBuilder> {
ResponseEntity.BodyBuilder contentLength(long var1);
ResponseEntity.BodyBuilder contentType(MediaType var1);
<T> ResponseEntity<T> body(@Nullable T var1);
**********
内部类:ResponseEntity.HeadersBuilder
public interface HeadersBuilder<B extends ResponseEntity.HeadersBuilder<B>> {
B header(String var1, String... var2);
B headers(@Nullable HttpHeaders var1);
B headers(Consumer<HttpHeaders> var1);
B lastModified(ZonedDateTime var1);
B lastModified(Instant var1);
B lastModified(long var1);
B location(URI var1);
B allow(HttpMethod... var1);
B cacheControl(CacheControl var1);
B varyBy(String... var1);
B eTag(String var1);
<T> ResponseEntity<T> build();
HttpEntity
public class HttpEntity<T> {
public static final HttpEntity<?> EMPTY = new HttpEntity();
private final HttpHeaders headers;
@Nullable
private final T body;
************
构造方法
protected HttpEntity() {
public HttpEntity(T body) {
public HttpEntity(MultiValueMap<String, String> headers) {
public HttpEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers) {
************
普通方法
public HttpHeaders getHeaders() {
public T getBody() {
public boolean hasBody() {
public boolean equals(@Nullable Object other) {
public int hashCode() {
public String toString() {
ResponseErrorHander:响应异常处理
public interface ResponseErrorHandler {
boolean hasError(ClientHttpResponse var1) throws IOException;
void handleError(ClientHttpResponse var1) throws IOException;
default void handleError(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
this.handleError(response);
}
}
DefaultResponseErrorHandler
public class DefaultResponseErrorHandler implements ResponseErrorHandler {
public DefaultResponseErrorHandler() {
}
public boolean hasError(ClientHttpResponse response) throws IOException {
protected boolean hasError(HttpStatus statusCode) {
protected boolean hasError(int unknownStatusCode) {
public void handleError(ClientHttpResponse response) throws IOException {
HttpStatus statusCode = HttpStatus.resolve(response.getRawStatusCode());
if (statusCode == null) {
byte[] body = this.getResponseBody(response);
String message = this.getErrorMessage(response.getRawStatusCode(), response.getStatusText(), body, this.getCharset(response));
throw new UnknownHttpStatusCodeException(message, response.getRawStatusCode(), response.getStatusText(), response.getHeaders(), body, this.getCharset(response));
} else {
this.handleError(response, statusCode);
}
}
private String getErrorMessage(int rawStatusCode, String statusText, @Nullable byte[] responseBody, @Nullable Charset charset) {
protected void handleError(ClientHttpResponse response, HttpStatus statusCode) throws IOException {
protected byte[] getResponseBody(ClientHttpResponse response) {
protected Charset getCharset(ClientHttpResponse response) {
ResponseExtrator
@FunctionalInterface
public interface ResponseExtractor<T> {
@Nullable
T extractData(ClientHttpResponse var1) throws IOException;
}
RestTemplate.HeadersExtrator
public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
***********
内部类:RestTemplate.HeadersExtrator
private static class HeadersExtractor implements ResponseExtractor<HttpHeaders> {
private HeadersExtractor() {
}
public HttpHeaders extractData(ClientHttpResponse response) {
return response.getHeaders();
}
}
还没有评论,来说两句吧...