实际项目中免不了要跟其他系统交互,那就会涉及到接口调用,如果是自己本系统的还好,可以通过打jar包引用的方式放到本项目中直接调用。
如果是其他系统的,那就需要通过远程接口调用,而远程接口调用通常使用两种方式调用
- 其一是webservice接口,
- 其二是rest接口(也就是对方给我们一个http链接地址)
本文就来讲讲如何通过rest接口调用远程服务。
在没有springboot之前,大家会想到使用httpclient去调用,没错,httpclient是一个很好的选择。但是springboot给我们封装了更好的调用,RestTemplate!
先建立如下工程目录结构:
下面逐一的讲关键类列出:
1 | java复制代码@RestController |
1 | java复制代码@RestController |
1 | java复制代码@Data |
启动工程,我们先用postman确保如下两个服务是ok的。
1 | shell复制代码get:localhost:8080/demo/get |
post:localhost:8080/demo/save
为了模拟简单,我们将第三方提供的服务也部署在本工程,也就是localhost:8080/demo/get和localhost:8080/demo/save
。
下面我们需要在ApiController
里面使用远程调用去发送请求了,怎么搞呢?之前说过了用RestTemplate
。
我们在Application中声明一个RestTemplate
1 | java复制代码@Bean |
然后在DemoController中使用@Resource注入进来
下面我们通过postman调用http://localhost:8080/demo/getUser?name=123
看看。
如下是控制台的输出,第一句是ApiController
的输出,第二句是上级调用的输出,说明我们已经通过了demoController
调用到了另外一个rest
服务了
在发送一个post请求:
如下是控制台的输出,第一句也是apiController
的输出,第二句是上级调用的输出,同样达到了我们的预期。
实际生产实例中还会涉及到超时,如果第三方响应太慢了,则不再等待,
是的。这里RestTemplate
也可以做到,我们不是在Application
中声明了一个RestTemplate
吗?,只需要将如下代码替换即可。
1 | java复制代码@Bean |
更多java原创阅读:javawu.com
本文转载自: 掘金