当前位置: 首页 > news >正文

网站建设售后培训今日热点新闻头条排行榜

网站建设售后培训,今日热点新闻头条排行榜,做动态网站用什么语言,做考勤的网站文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…

文章目录

  • 一、概述
  • 二、使用
    • 1、创建接口@HttpExchange方法
    • 2、创建一个在调用方法时执行请求的代理
    • 3、方法参数
    • 4、返回值
    • 5、错误处理
      • (1)为RestClient
      • (2)为WebClient
      • (3)为RestTemplate
  • 注意

一、概述

官方文档:https://docs.spring.io/spring-framework/reference/6.1/integration/rest-clients.html#rest-http-interface

Spring6.0推出了新的HTTP接口(类似Openfeign,但是无法做到根据微服务名称进行负载均衡),Spring框架允许您将HTTP服务定义为Java接口@HttpExchange方法。
可以将这样的接口传递给HttpServiceProxyFactory创建通过HTTP客户端执行请求的代理,例如RestClient或者WebClient。
也可以从实现接口@Controller用于服务器请求处理。

二、使用

1、创建接口@HttpExchange方法

interface RepositoryService {@GetExchange("/repos/{owner}/{repo}")Repository getRepository(@PathVariable String owner, @PathVariable String repo);// more HTTP exchange methods...}

2、创建一个在调用方法时执行请求的代理

// 为RestClient
RestClient restClient = RestClient.builder().baseUrl("https://api.github.com/").build();
// 适配
RestClientAdapter adapter = RestClientAdapter.create(restClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();
// 构建接口的代理,可以注册为Bean,直接调用
RepositoryService service = factory.createClient(RepositoryService.class);
// 为WebClient
WebClient webClient = WebClient.builder().baseUrl("https://api.github.com/").build();
WebClientAdapter adapter = WebClientAdapter.create(webClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();RepositoryService service = factory.createClient(RepositoryService.class);
// 为RestTemplate 
RestTemplate restTemplate = new RestTemplate();
restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory("https://api.github.com/"));
RestTemplateAdapter adapter = RestTemplateAdapter.create(restTemplate);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();RepositoryService service = factory.createClient(RepositoryService.class);
// @HttpExchange在类型级别受支持,它适用于所有方法
@HttpExchange(url = "/repos/{owner}/{repo}", accept = "application/vnd.github.v3+json")
interface RepositoryService {@GetExchangeRepository getRepository(@PathVariable String owner, @PathVariable String repo);@PatchExchange(contentType = MediaType.APPLICATION_FORM_URLENCODED_VALUE)void updateRepository(@PathVariable String owner, @PathVariable String repo,@RequestParam String name, @RequestParam String description, @RequestParam String homepage);}

3、方法参数

带注解的HTTP交换方法支持具有以下方法参数的灵活方法签名
在这里插入图片描述

4、返回值

支持的返回值取决于底层客户端。

客户适应HttpExchangeAdapter诸如RestClient和RestTemplate支持同步返回值:
在这里插入图片描述

客户响应ReactorHttpExchangeAdapter诸如WebClient,支持上述所有功能以及反应性变体。下表显示了反应器类型,但是也可以使用通过ReactiveAdapterRegistry:
在这里插入图片描述
默认情况下,同步返回值与ReactorHttpExchangeAdapter取决于底层HTTP客户端的配置。您可以设置一个blockTimeout值,但是我们建议依赖底层HTTP客户机的超时设置,它在较低的级别上运行并提供更多的控制。

5、错误处理

要定制错误响应处理,您需要配置底层HTTP客户端。

(1)为RestClient

默认情况下,RestClient抛出RestClientException对于4xx和5xx HTTP状态代码。要对此进行自定义,请注册一个适用于通过客户端执行的所有响应的响应状态处理程序:

RestClient restClient = RestClient.builder().defaultStatusHandler(HttpStatusCode::isError, (request, response) -> ...).build();RestClientAdapter adapter = RestClientAdapter.create(restClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();

有关更多详细信息和选项(如取消错误状态代码),请参见的JavadocdefaultStatusHandlerRestClient.Builder

(2)为WebClient

默认情况下,WebClient抛出WebClientResponseException对于4xx和5xx HTTP状态代码。要对此进行自定义,请注册一个适用于通过客户端执行的所有响应的响应状态处理程序:

WebClient webClient = WebClient.builder().defaultStatusHandler(HttpStatusCode::isError, resp -> ...).build();WebClientAdapter adapter = WebClientAdapter.create(webClient);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(adapter).build();

(3)为RestTemplate

默认情况下,RestTemplate抛出RestClientException对于4xx和5xx HTTP状态代码。要对此进行自定义,请注册一个适用于通过客户端执行的所有响应的错误处理程序:

RestTemplate restTemplate = new RestTemplate();
restTemplate.setErrorHandler(myErrorHandler);RestTemplateAdapter adapter = RestTemplateAdapter.create(restTemplate);
HttpServiceProxyFactory factory = HttpServiceProxyFactory.builderFor(adapter).build();

有关更多详细信息和选项,请参见的JavadocsetErrorHandler在RestTemplate和ResponseErrorHandler等级制度。

注意

  1. HttpEntity标题和正文必须提供给RestClient通过headers(Consumer<HttpHeaders>)和body(Object).
  2. RequestEntity方法、URI、标头和正文必须提供给RestClient通过method(HttpMethod), uri(URI), headers(Consumer<HttpHeaders>)body(Object).
http://www.tj-hxxt.cn/news/68688.html

相关文章:

  • 中铁二局被降级优化清理大师
  • 网站策划书包括哪几个步骤上海网站快速排名优化
  • 网站集群建设是推广营销网络
  • 视频网站app怎么做互联网公司有哪些
  • 皮革材料做网站合肥关键词优化平台
  • 如何做英文网站宝塔没有域名直接做网站怎么弄
  • 为网站做seo需要什么百度账号怎么注册
  • 门户网站建设情况汇报浙江搜索引擎优化
  • 做论坛网站能赚钱吗顶尖文案网站
  • 小程序登录怎么退出账号搜索引擎优化的基本手段
  • 手机网站制作app自助建站系统代理
  • 建设银行官方网站app下载seo sem
  • 开发网站平台帆软社区app
  • d代码做网站竞价运营是做什么的
  • 外贸网页制作公司seo搜索引擎优化总结报告
  • 宁波市建设厅网站首页泉州百度首页优化
  • 做装修行业营销型网站百度刷排名百度快速排名
  • bc网站怎么做排名长春网站优化团队
  • 如何做网站pptseo营销专员
  • eclipse与jsp网站开发搜索引擎seo是什么
  • 住房和城乡建设部科技网站提升seo排名平台
  • 网站开发好公司建站为应用技术
  • 手机建站程序免费下载拼多多运营
  • 网站开发后所有权成品影视app开发
  • 深圳南山企业网站建设报价深圳最新疫情
  • WordPress搭建社区网站技术培训
  • 动态网页网站苏州seo关键词排名
  • 怎样注册一个自己的网站爱站seo查询软件
  • 阳泉哪里做网站培训心得体会1000字
  • 通过网站做国际贸易的成本百度推广账号登录