springboot restTemplate 使用说明

叁歲伎倆 2023-02-21 04:58 99阅读 0赞

springboot restTemplate 使用说明

#

***********************

相关类与接口

RestTemplate

  1. public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
  2. private static final boolean romePresent;
  3. private static final boolean jaxb2Present;
  4. private static final boolean jackson2Present;
  5. private static final boolean jackson2XmlPresent;
  6. private static final boolean jackson2SmilePresent;
  7. private static final boolean jackson2CborPresent;
  8. private static final boolean gsonPresent;
  9. private static final boolean jsonbPresent;
  10. private final List<HttpMessageConverter<?>> messageConverters;
  11. private ResponseErrorHandler errorHandler;
  12. private UriTemplateHandler uriTemplateHandler;
  13. private final ResponseExtractor<HttpHeaders> headersExtractor;
  14. ***********
  15. 构造方法
  16. public RestTemplate() {
  17. this.messageConverters = new ArrayList();
  18. this.errorHandler = new DefaultResponseErrorHandler();
  19. this.headersExtractor = new RestTemplate.HeadersExtractor();
  20. this.messageConverters.add(new ByteArrayHttpMessageConverter());
  21. this.messageConverters.add(new StringHttpMessageConverter());
  22. this.messageConverters.add(new ResourceHttpMessageConverter(false));
  23. try {
  24. this.messageConverters.add(new SourceHttpMessageConverter());
  25. } catch (Error var2) {
  26. }
  27. this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
  28. if (romePresent) {
  29. this.messageConverters.add(new AtomFeedHttpMessageConverter());
  30. this.messageConverters.add(new RssChannelHttpMessageConverter());
  31. }
  32. if (jackson2XmlPresent) {
  33. this.messageConverters.add(new MappingJackson2XmlHttpMessageConverter());
  34. } else if (jaxb2Present) {
  35. this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
  36. }
  37. if (jackson2Present) {
  38. this.messageConverters.add(new MappingJackson2HttpMessageConverter());
  39. } else if (gsonPresent) {
  40. this.messageConverters.add(new GsonHttpMessageConverter());
  41. } else if (jsonbPresent) {
  42. this.messageConverters.add(new JsonbHttpMessageConverter());
  43. }
  44. if (jackson2SmilePresent) {
  45. this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
  46. }
  47. if (jackson2CborPresent) {
  48. this.messageConverters.add(new MappingJackson2CborHttpMessageConverter());
  49. }
  50. this.uriTemplateHandler = initUriTemplateHandler();
  51. }
  52. public RestTemplate(ClientHttpRequestFactory requestFactory) {
  53. this();
  54. this.setRequestFactory(requestFactory);
  55. }
  56. public RestTemplate(List<HttpMessageConverter<?>> messageConverters) {
  57. this.messageConverters = new ArrayList();
  58. this.errorHandler = new DefaultResponseErrorHandler();
  59. this.headersExtractor = new RestTemplate.HeadersExtractor();
  60. this.validateConverters(messageConverters);
  61. this.messageConverters.addAll(messageConverters);
  62. this.uriTemplateHandler = initUriTemplateHandler();
  63. }
  64. ***********
  65. 普通方法
  66. private static DefaultUriBuilderFactory initUriTemplateHandler() {
  67. DefaultUriBuilderFactory uriFactory = new DefaultUriBuilderFactory();
  68. uriFactory.setEncodingMode(EncodingMode.URI_COMPONENT);
  69. return uriFactory;
  70. }
  71. public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
  72. private void validateConverters(List<HttpMessageConverter<?>> messageConverters) {
  73. public List<HttpMessageConverter<?>> getMessageConverters() {
  74. public void setErrorHandler(ResponseErrorHandler errorHandler) {
  75. public ResponseErrorHandler getErrorHandler() {
  76. public void setDefaultUriVariables(Map<String, ?> uriVars) {
  77. public void setUriTemplateHandler(UriTemplateHandler handler) {
  78. public UriTemplateHandler getUriTemplateHandler() {
  79. ************
  80. get 方法
  81. public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
  82. public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  83. public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException {
  84. public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException {
  85. public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  86. public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType) throws RestClientException {
  87. ************
  88. post 方法
  89. public URI postForLocation(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
  90. public URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
  91. public URI postForLocation(URI url, @Nullable Object request) throws RestClientException {
  92. public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
  93. public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  94. public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
  95. public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
  96. public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  97. public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
  98. ************
  99. put 方法
  100. public void put(String url, @Nullable Object request, Object... uriVariables) throws RestClientException {
  101. public void put(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientException {
  102. public void put(URI url, @Nullable Object request) throws RestClientException {
  103. ************
  104. delete 方法
  105. public void delete(String url, Object... uriVariables) throws RestClientException {
  106. public void delete(String url, Map<String, ?> uriVariables) throws RestClientException {
  107. public void delete(URI url) throws RestClientException {
  108. ************
  109. head 方法
  110. public HttpHeaders headForHeaders(String url, Object... uriVariables) throws RestClientException {
  111. public HttpHeaders headForHeaders(String url, Map<String, ?> uriVariables) throws RestClientException {
  112. public HttpHeaders headForHeaders(URI url) throws RestClientException {
  113. ************
  114. patch方法
  115. public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException {
  116. public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  117. public <T> T patchForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException {
  118. ************
  119. options 方法
  120. public Set<HttpMethod> optionsForAllow(String url, Object... uriVariables) throws RestClientException {
  121. public Set<HttpMethod> optionsForAllow(String url, Map<String, ?> uriVariables) throws RestClientException {
  122. public Set<HttpMethod> optionsForAllow(URI url) throws RestClientException {
  123. ************
  124. exchange 方法
  125. public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException {
  126. public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  127. public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException {
  128. public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
  129. //httpEntity自定义请求头,路径及参数可直接设置
  130. public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
  131. public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException {
  132. public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
  133. public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException {
  134. public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType) throws RestClientException {
  135. ************
  136. execute 方法
  137. public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException {
  138. public <T> T execute(String url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientException {
  139. public <T> T execute(URI url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
  140. ************
  141. 其他方法
  142. protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException {
  143. protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
  144. public <T> RequestCallback acceptHeaderRequestCallback(Class<T> responseType) {
  145. public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody) {
  146. public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody, Type responseType) {
  147. public <T> ResponseExtractor<ResponseEntity<T>> responseEntityExtractor(Type responseType) {
  148. protected ResponseExtractor<HttpHeaders> headersExtractor() {
  149. private static <T> T nonNull(@Nullable T result) {
  150. static {
  151. ClassLoader classLoader = RestTemplate.class.getClassLoader();
  152. romePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader);
  153. jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
  154. jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
  155. jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);
  156. jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);
  157. jackson2CborPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader);
  158. gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
  159. jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);
  160. }
  161. **************
  162. 内部类:Resttemplate.HeadersExtractor
  163. private static class HeadersExtractor implements ResponseExtractor<HttpHeaders> {
  164. private HeadersExtractor() {
  165. }
  166. public HttpHeaders extractData(ClientHttpResponse response) {
  167. return response.getHeaders();
  168. }
  169. }
  170. **************
  171. 内部类:Resttemplate.ResponseEntityResponseExtractor
  172. private class ResponseEntityResponseExtractor<T> implements ResponseExtractor<ResponseEntity<T>> {
  173. @Nullable
  174. private final HttpMessageConverterExtractor<T> delegate;
  175. public ResponseEntityResponseExtractor(@Nullable Type responseType) {
  176. public ResponseEntity<T> extractData(ClientHttpResponse response) throws IOException {
  177. **************
  178. 内部类:Resttemplate.HttpEntityRequestCallback
  179. private class HttpEntityRequestCallback extends RestTemplate.AcceptHeaderRequestCallback {
  180. private final HttpEntity<?> requestEntity;
  181. public HttpEntityRequestCallback(@Nullable Object requestBody) {
  182. public HttpEntityRequestCallback(@Nullable Object requestBody, @Nullable Type responseType) {
  183. public void doWithRequest(ClientHttpRequest httpRequest) throws IOException {
  184. private void logBody(Object body, @Nullable MediaType mediaType, HttpMessageConverter<?> converter) {
  185. **************
  186. 内部类:Resttemplate.AcceptHeaderRequestCallback
  187. private class AcceptHeaderRequestCallback implements RequestCallback {
  188. @Nullable
  189. private final Type responseType;
  190. public AcceptHeaderRequestCallback(@Nullable Type responseType) {
  191. public void doWithRequest(ClientHttpRequest request) throws IOException {
  192. private boolean canReadResponse(Type responseType, HttpMessageConverter<?> converter) {
  193. private Stream<MediaType> getSupportedMediaTypes(HttpMessageConverter<?> messageConverter) {

RestOperations

  1. public interface RestOperations {
  2. ***********
  3. get 方法
  4. <T> T getForObject(String var1, Class<T> var2, Object... var3) throws RestClientException;
  5. <T> T getForObject(String var1, Class<T> var2, Map<String, ?> var3) throws RestClientException;
  6. <T> T getForObject(URI var1, Class<T> var2) throws RestClientException;
  7. <T> ResponseEntity<T> getForEntity(String var1, Class<T> var2, Object... var3) throws RestClientException;
  8. <T> ResponseEntity<T> getForEntity(String var1, Class<T> var2, Map<String, ?> var3) throws RestClientException;
  9. <T> ResponseEntity<T> getForEntity(URI var1, Class<T> var2) throws RestClientException;
  10. ***********
  11. post 方法
  12. URI postForLocation(String var1, @Nullable Object var2, Object... var3) throws RestClientException;
  13. URI postForLocation(String var1, @Nullable Object var2, Map<String, ?> var3) throws RestClientException;
  14. URI postForLocation(URI var1, @Nullable Object var2) throws RestClientException;
  15. <T> T postForObject(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
  16. <T> T postForObject(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
  17. <T> T postForObject(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
  18. <T> ResponseEntity<T> postForEntity(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
  19. <T> ResponseEntity<T> postForEntity(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
  20. <T> ResponseEntity<T> postForEntity(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
  21. ***********
  22. put 方法
  23. void put(String var1, @Nullable Object var2, Object... var3) throws RestClientException;
  24. void put(String var1, @Nullable Object var2, Map<String, ?> var3) throws RestClientException;
  25. void put(URI var1, @Nullable Object var2) throws RestClientException;
  26. ***********
  27. delete 方法
  28. void delete(String var1, Object... var2) throws RestClientException;
  29. void delete(String var1, Map<String, ?> var2) throws RestClientException;
  30. void delete(URI var1) throws RestClientException;
  31. ***********
  32. head方法
  33. HttpHeaders headForHeaders(String var1, Object... var2) throws RestClientException;
  34. HttpHeaders headForHeaders(String var1, Map<String, ?> var2) throws RestClientException;
  35. HttpHeaders headForHeaders(URI var1) throws RestClientException;
  36. ***********
  37. patch 方法
  38. <T> T patchForObject(String var1, @Nullable Object var2, Class<T> var3, Object... var4) throws RestClientException;
  39. <T> T patchForObject(String var1, @Nullable Object var2, Class<T> var3, Map<String, ?> var4) throws RestClientException;
  40. <T> T patchForObject(URI var1, @Nullable Object var2, Class<T> var3) throws RestClientException;
  41. ***********
  42. options 方法
  43. Set<HttpMethod> optionsForAllow(String var1, Object... var2) throws RestClientException;
  44. Set<HttpMethod> optionsForAllow(String var1, Map<String, ?> var2) throws RestClientException;
  45. Set<HttpMethod> optionsForAllow(URI var1) throws RestClientException;
  46. ***********
  47. exchange 方法
  48. <T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4, Object... var5) throws RestClientException;
  49. <T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4, Map<String, ?> var5) throws RestClientException;
  50. <T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4, Object... var5) throws RestClientException;
  51. <T> ResponseEntity<T> exchange(String var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4, Map<String, ?> var5) throws RestClientException;
  52. <T> ResponseEntity<T> exchange(URI var1, HttpMethod var2, @Nullable HttpEntity<?> var3, Class<T> var4) throws RestClientException;
  53. <T> ResponseEntity<T> exchange(URI var1, HttpMethod var2, @Nullable HttpEntity<?> var3, ParameterizedTypeReference<T> var4) throws RestClientException;
  54. <T> ResponseEntity<T> exchange(RequestEntity<?> var1, Class<T> var2) throws RestClientException;
  55. <T> ResponseEntity<T> exchange(RequestEntity<?> var1, ParameterizedTypeReference<T> var2) throws RestClientException;
  56. ***********
  57. execute 方法
  58. <T> T execute(String var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4, Object... var5) throws RestClientException;
  59. <T> T execute(String var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4, Map<String, ?> var5) throws RestClientException;
  60. <T> T execute(URI var1, HttpMethod var2, @Nullable RequestCallback var3, @Nullable ResponseExtractor<T> var4) throws RestClientException;

InterceptingHttpAccessor:拦截器设置

  1. public abstract class InterceptingHttpAccessor extends HttpAccessor {
  2. private final List<ClientHttpRequestInterceptor> interceptors = new ArrayList();
  3. @Nullable
  4. private volatile ClientHttpRequestFactory interceptingRequestFactory;
  5. public InterceptingHttpAccessor() {
  6. }
  7. public void setInterceptors(List<ClientHttpRequestInterceptor> interceptors) {
  8. public List<ClientHttpRequestInterceptor> getInterceptors() {
  9. public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
  10. public ClientHttpRequestFactory getRequestFactory() {

HttpAccessor

  1. public abstract class HttpAccessor {
  2. protected final Log logger = HttpLogging.forLogName(this.getClass());
  3. private ClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
  4. private final List<ClientHttpRequestInitializer> clientHttpRequestInitializers = new ArrayList();
  5. public HttpAccessor() {
  6. }
  7. public void setRequestFactory(ClientHttpRequestFactory requestFactory) {
  8. Assert.notNull(requestFactory, "ClientHttpRequestFactory must not be null");
  9. this.requestFactory = requestFactory;
  10. }
  11. public ClientHttpRequestFactory getRequestFactory() {
  12. return this.requestFactory;
  13. }
  14. public void setClientHttpRequestInitializers(List<ClientHttpRequestInitializer> clientHttpRequestInitializers) {
  15. if (this.clientHttpRequestInitializers != clientHttpRequestInitializers) {
  16. this.clientHttpRequestInitializers.clear();
  17. this.clientHttpRequestInitializers.addAll(clientHttpRequestInitializers);
  18. AnnotationAwareOrderComparator.sort(this.clientHttpRequestInitializers);
  19. }
  20. }
  21. public List<ClientHttpRequestInitializer> getClientHttpRequestInitializers() {
  22. return this.clientHttpRequestInitializers;
  23. }
  24. protected ClientHttpRequest createRequest(URI url, HttpMethod method) throws IOException {
  25. ClientHttpRequest request = this.getRequestFactory().createRequest(url, method);
  26. this.initialize(request);
  27. if (this.logger.isDebugEnabled()) {
  28. this.logger.debug("HTTP " + method.name() + " " + url);
  29. }
  30. return request;
  31. }
  32. private void initialize(ClientHttpRequest request) {
  33. this.clientHttpRequestInitializers.forEach((initializer) -> {
  34. initializer.initialize(request);
  35. });
  36. }
  37. }

ClientHttpRequestInterceptor:拦截器接口

  1. @FunctionalInterface
  2. public interface ClientHttpRequestInterceptor {
  3. ClientHttpResponse intercept(HttpRequest var1, byte[] var2, ClientHttpRequestExecution var3) throws IOException;
  4. }

ClientHttpRequestExecution:拦截器执行接口

  1. @FunctionalInterface
  2. public interface ClientHttpRequestExecution {
  3. ClientHttpResponse execute(HttpRequest var1, byte[] var2) throws IOException;
  4. }

RequestEntity

  1. public class RequestEntity<T> extends HttpEntity<T> {
  2. @Nullable
  3. private final HttpMethod method;
  4. private final URI url;
  5. @Nullable
  6. private final Type type;
  7. *************
  8. 构造方法
  9. public RequestEntity(HttpMethod method, URI url) {
  10. public RequestEntity(@Nullable T body, HttpMethod method, URI url) {
  11. public RequestEntity(@Nullable T body, HttpMethod method, URI url, Type type) {
  12. public RequestEntity(MultiValueMap<String, String> headers, HttpMethod method, URI url) {
  13. public RequestEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, @Nullable HttpMethod method, URI url) {
  14. public RequestEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, @Nullable HttpMethod method, URI url, @Nullable Type type) {
  15. *************
  16. 普通方法
  17. public static RequestEntity.BodyBuilder method(HttpMethod method, URI url) {
  18. public static RequestEntity.BodyBuilder post(URI url) {
  19. public static RequestEntity.BodyBuilder put(URI url) {
  20. public static RequestEntity.BodyBuilder patch(URI url) {
  21. public static RequestEntity.HeadersBuilder<?> get(URI url) {
  22. public static RequestEntity.HeadersBuilder<?> head(URI url) {
  23. public static RequestEntity.HeadersBuilder<?> delete(URI url) {
  24. public static RequestEntity.HeadersBuilder<?> options(URI url) {
  25. public HttpMethod getMethod() {
  26. public URI getUrl() {
  27. public Type getType() {
  28. public boolean equals(@Nullable Object other) {
  29. public int hashCode() {
  30. public String toString() {
  31. *************
  32. 内部类:RequestEntity.DefaultBodyBuilder
  33. private static class DefaultBodyBuilder implements RequestEntity.BodyBuilder {
  34. private final HttpMethod method;
  35. private final URI url;
  36. private final HttpHeaders headers = new HttpHeaders();
  37. public DefaultBodyBuilder(HttpMethod method, URI url) {
  38. public RequestEntity.BodyBuilder header(String headerName, String... headerValues) {
  39. public RequestEntity.BodyBuilder headers(@Nullable HttpHeaders headers) {
  40. public RequestEntity.BodyBuilder headers(Consumer<HttpHeaders> headersConsumer) {
  41. public <T> RequestEntity<T> body(T body) {
  42. public <T> RequestEntity<T> body(T body, Type type) {
  43. public RequestEntity.BodyBuilder accept(MediaType... acceptableMediaTypes) {
  44. public RequestEntity.BodyBuilder acceptCharset(Charset... acceptableCharsets) {
  45. public RequestEntity.BodyBuilder contentLength(long contentLength) {
  46. public RequestEntity.BodyBuilder contentType(MediaType contentType) {
  47. public RequestEntity.BodyBuilder ifModifiedSince(ZonedDateTime ifModifiedSince) {
  48. public RequestEntity.BodyBuilder ifModifiedSince(Instant ifModifiedSince) {
  49. public RequestEntity.BodyBuilder ifModifiedSince(long ifModifiedSince) {
  50. public RequestEntity.BodyBuilder ifNoneMatch(String... ifNoneMatches) {
  51. public RequestEntity<Void> build() {
  52. *************
  53. 内部接口:RequestEntity.BodyBuilder
  54. public interface BodyBuilder extends RequestEntity.HeadersBuilder<RequestEntity.BodyBuilder> {
  55. RequestEntity.BodyBuilder contentLength(long var1);
  56. RequestEntity.BodyBuilder contentType(MediaType var1);
  57. <T> RequestEntity<T> body(T var1);
  58. <T> RequestEntity<T> body(T var1, Type var2);
  59. *************
  60. 内部接口:RequestEntity.HeadersBuilder
  61. public interface HeadersBuilder<B extends RequestEntity.HeadersBuilder<B>> {
  62. B header(String var1, String... var2);
  63. B headers(@Nullable HttpHeaders var1);
  64. B headers(Consumer<HttpHeaders> var1);
  65. B accept(MediaType... var1);
  66. B acceptCharset(Charset... var1);
  67. B ifModifiedSince(ZonedDateTime var1);
  68. B ifModifiedSince(Instant var1);
  69. B ifModifiedSince(long var1);
  70. B ifNoneMatch(String... var1);
  71. RequestEntity<Void> build();

ResponseEntity

  1. public class ResponseEntity<T> extends HttpEntity<T> {
  2. private final Object status;
  3. **********
  4. 构造方法
  5. public ResponseEntity(HttpStatus status) {
  6. public ResponseEntity(@Nullable T body, HttpStatus status) {
  7. public ResponseEntity(MultiValueMap<String, String> headers, HttpStatus status) {
  8. public ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, HttpStatus status) {
  9. private ResponseEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers, Object status) {
  10. **********
  11. 普通方法
  12. public HttpStatus getStatusCode() {
  13. public int getStatusCodeValue() {
  14. public boolean equals(@Nullable Object other) {
  15. public int hashCode() {
  16. public String toString() {
  17. public static ResponseEntity.BodyBuilder status(HttpStatus status) {
  18. public static ResponseEntity.BodyBuilder status(int status) {
  19. return new ResponseEntity.DefaultBuilder(status);
  20. }
  21. public static ResponseEntity.BodyBuilder ok() {
  22. public static <T> ResponseEntity<T> ok(T body) {
  23. public static <T> ResponseEntity<T> of(Optional<T> body) {
  24. public static ResponseEntity.BodyBuilder created(URI location) {
  25. public static ResponseEntity.BodyBuilder accepted() {
  26. public static ResponseEntity.BodyBuilder badRequest() {
  27. public static ResponseEntity.BodyBuilder unprocessableEntity() {
  28. public static ResponseEntity.HeadersBuilder<?> noContent() {
  29. public static ResponseEntity.HeadersBuilder<?> notFound() {
  30. **********
  31. 内部类:ResponseEntity.DefaultBuilder
  32. private static class DefaultBuilder implements ResponseEntity.BodyBuilder {
  33. private final Object statusCode;
  34. private final HttpHeaders headers = new HttpHeaders();
  35. public DefaultBuilder(Object statusCode) {
  36. this.statusCode = statusCode;
  37. }
  38. public ResponseEntity.BodyBuilder header(String headerName, String... headerValues) {
  39. public ResponseEntity.BodyBuilder headers(Consumer<HttpHeaders> headersConsumer) {
  40. public <T> ResponseEntity<T> body(@Nullable T body) {
  41. public ResponseEntity.BodyBuilder contentLength(long contentLength) {
  42. public ResponseEntity.BodyBuilder contentType(MediaType contentType) {
  43. public ResponseEntity.BodyBuilder lastModified(ZonedDateTime date) {
  44. public ResponseEntity.BodyBuilder lastModified(Instant date) {
  45. public ResponseEntity.BodyBuilder lastModified(long date) {
  46. public ResponseEntity.BodyBuilder location(URI location) {
  47. public ResponseEntity.BodyBuilder allow(HttpMethod... allowedMethods) {
  48. public ResponseEntity.BodyBuilder cacheControl(CacheControl cacheControl) {
  49. public ResponseEntity.BodyBuilder varyBy(String... requestHeaders) {
  50. public ResponseEntity.BodyBuilder eTag(String etag) {
  51. public <T> ResponseEntity<T> build() {
  52. **********
  53. 内部类:ResponseEntity.BodyBuilder
  54. public interface BodyBuilder extends ResponseEntity.HeadersBuilder<ResponseEntity.BodyBuilder> {
  55. ResponseEntity.BodyBuilder contentLength(long var1);
  56. ResponseEntity.BodyBuilder contentType(MediaType var1);
  57. <T> ResponseEntity<T> body(@Nullable T var1);
  58. **********
  59. 内部类:ResponseEntity.HeadersBuilder
  60. public interface HeadersBuilder<B extends ResponseEntity.HeadersBuilder<B>> {
  61. B header(String var1, String... var2);
  62. B headers(@Nullable HttpHeaders var1);
  63. B headers(Consumer<HttpHeaders> var1);
  64. B lastModified(ZonedDateTime var1);
  65. B lastModified(Instant var1);
  66. B lastModified(long var1);
  67. B location(URI var1);
  68. B allow(HttpMethod... var1);
  69. B cacheControl(CacheControl var1);
  70. B varyBy(String... var1);
  71. B eTag(String var1);
  72. <T> ResponseEntity<T> build();

HttpEntity

  1. public class HttpEntity<T> {
  2. public static final HttpEntity<?> EMPTY = new HttpEntity();
  3. private final HttpHeaders headers;
  4. @Nullable
  5. private final T body;
  6. ************
  7. 构造方法
  8. protected HttpEntity() {
  9. public HttpEntity(T body) {
  10. public HttpEntity(MultiValueMap<String, String> headers) {
  11. public HttpEntity(@Nullable T body, @Nullable MultiValueMap<String, String> headers) {
  12. ************
  13. 普通方法
  14. public HttpHeaders getHeaders() {
  15. public T getBody() {
  16. public boolean hasBody() {
  17. public boolean equals(@Nullable Object other) {
  18. public int hashCode() {
  19. public String toString() {

ResponseErrorHander:响应异常处理

  1. public interface ResponseErrorHandler {
  2. boolean hasError(ClientHttpResponse var1) throws IOException;
  3. void handleError(ClientHttpResponse var1) throws IOException;
  4. default void handleError(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
  5. this.handleError(response);
  6. }
  7. }

DefaultResponseErrorHandler

  1. public class DefaultResponseErrorHandler implements ResponseErrorHandler {
  2. public DefaultResponseErrorHandler() {
  3. }
  4. public boolean hasError(ClientHttpResponse response) throws IOException {
  5. protected boolean hasError(HttpStatus statusCode) {
  6. protected boolean hasError(int unknownStatusCode) {
  7. public void handleError(ClientHttpResponse response) throws IOException {
  8. HttpStatus statusCode = HttpStatus.resolve(response.getRawStatusCode());
  9. if (statusCode == null) {
  10. byte[] body = this.getResponseBody(response);
  11. String message = this.getErrorMessage(response.getRawStatusCode(), response.getStatusText(), body, this.getCharset(response));
  12. throw new UnknownHttpStatusCodeException(message, response.getRawStatusCode(), response.getStatusText(), response.getHeaders(), body, this.getCharset(response));
  13. } else {
  14. this.handleError(response, statusCode);
  15. }
  16. }
  17. private String getErrorMessage(int rawStatusCode, String statusText, @Nullable byte[] responseBody, @Nullable Charset charset) {
  18. protected void handleError(ClientHttpResponse response, HttpStatus statusCode) throws IOException {
  19. protected byte[] getResponseBody(ClientHttpResponse response) {
  20. protected Charset getCharset(ClientHttpResponse response) {

ResponseExtrator

  1. @FunctionalInterface
  2. public interface ResponseExtractor<T> {
  3. @Nullable
  4. T extractData(ClientHttpResponse var1) throws IOException;
  5. }

RestTemplate.HeadersExtrator

  1. public class RestTemplate extends InterceptingHttpAccessor implements RestOperations {
  2. ***********
  3. 内部类:RestTemplate.HeadersExtrator
  4. private static class HeadersExtractor implements ResponseExtractor<HttpHeaders> {
  5. private HeadersExtractor() {
  6. }
  7. public HttpHeaders extractData(ClientHttpResponse response) {
  8. return response.getHeaders();
  9. }
  10. }

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读