Cloud之三HTTP请求

Posted JAVA微讲堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cloud之三HTTP请求相关的知识,希望对你有一定的参考价值。

   往期回顾
                   

浏览器作为客户端



服务器作为客户端


Cloud之三HTTP请求

如上图,浏览器做作为客户端访问服务器1,服务器1的数据由服务器2给予。因此务器1对于浏览器来说它是服务器,对于服务器2来说它是客户端。服务器1访问服务器2和浏览器访问服务器1,一样都可以通过IP+端口+请求路径。


那么服务器1如何作为客户端?


Apache Jakarta Common 下的子项目HttpClient 一个HTTP客户端编程工具,可以用它来在代码级别实现Http客户端请求。spring对HttpClient进行了封装,这个封装后的类就是 RestTemplate,cloud也对HttpClient进行了封装,这个封装类就是FeignClient。

 @Autowired RestTemplate restTemplate; @GetMapping("getinfo") public String getInfo(){ String url="http://127.0.0.1:7000/info/1"; return restTemplate.getForEntity(url,String.class).getBody(); }

如上图,我们可以加一个注册服务器,服务器只要向注册服务器注册(注册名字+IP+port)此时服务器之间的调用,用注册的服务名字即可,这样就把服务器解耦,也就是所谓注册服务器实现服务发现。

 @RequestMapping("getInfo3") public String getInfo3(int tag){ String url="http://clienttwo/infoEntityJson/"+tag; //远程调用 ResponseEntity responseEntity= restTemplate.getForEntity(url, String.class); return responseEntity.getBody().toString();
}

代码里的clienttwo其实就映射到注册服务器中的IP+端口,clienttwo就是服务器向注册服务器注册的名字。


本文我只粘贴了RestTemplate的代码,对于FeignClient来说更简洁,项目中如果用cloud建议用FeignClient。只需要两个注解:

1、 @EnableFeignClients

2、@FeignClient






以上是关于Cloud之三HTTP请求的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Gateway实战之三:动态路由

Spring Cloud Gateway实战之三:动态路由

简单的 Javascript http 请求片段但不起作用

如何验证来自 HTTP 请求的 Google Cloud Task 令牌?

如何在 Cloud Functions for Firebase 中使 HTTP 请求异步/等待?

第862期成为一名函数式码农之三