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();
        }
    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值