微服务

RPC和HTTP

常用的两种调用方式

  • PRC:Remote Produce Call远程过程调用(不常用)
    • 实现远程调用其他计算机的服务
    • 像调用本地服务一样调用远程服务
    • 在这里插入图片描述
  • (最常用)http其实是一种网络传输协议,基于TCP,规定了数据传输的格式
    • 缺点:消息封装臃肿
    • 优点:对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念
    • 在这里插入图片描述

http客户端工具

微服务选择了http,那么我们需要考虑自动如何来实现对请求和响应的处理开源世界已经集成很多http客户端工具,能够帮助我们做这些事情,例如:

  • HttpClient
  • OKHttp
  • HttpUrlConnection

  • 这些不同的客户端,api各不相同,功能相同

HttpClient

  • 介绍:
    • HttpClient是Apache公司的产品,是Http Components下的一个组件。
      官网
  • 特点:
    • 基于标准、纯净的Java语言。实现了Http1.0和Http1.1
    • 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)
    • 支持HTTPS协议。
    • 通过Http代理建立透明的连接。
    • 自动处理Set-Cookie中的Cookie。

使用 HttpClient

//  //创建HttpClients客户端
	CloseableHttpClient httpClient = HttpClients.createDefault();

 //get请求
  HttpGet request = new HttpGet("http://www.baidu.com");
 // 请求 返回值
  String response = this.httpClient.execute(request, new BasicResponseHandler());
// 模仿浏览器发送请求
request.setHeader("User-Agent",
        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");

spring的RestTemplate

spring提供一个RestTemplate模板工具类,对基于http的客户进行了封装,非常方便RestTemplate并没有限定http客户端类型,而是进行了抽象(底层不是自己的),
目前常用3种都有支持

  • HttpClient
  • OKHttp
  • JDK原生的HttpUrlConnection(默认的)

使用RestTemplate

创建springBoot项目
在启动类初始化RestTemplate对象

@Bean
public RestTemplate restTemplate(){
 // 默认HttpUrlConnection,如果要用其他的就在()中指定
    return  new RestTemplate(); 
}

test

@Autowired
private RestTemplate restTemplate;
/** 
	第一参数:访问其他项目中方法的路径
	第二参数:访问的方法返回的参数
*/
User user = restTemplate.getForObject
                ("http://localhost:9090/hello/hello?id=3", User.class);

实现了:跨项目之间的调用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值