调用外部接口的方法及调用服务

在Java项目中调用第三方接口的方式有:

①通过JDK网络类Java.net.HttpURLConnection;

②通过common封装好的HttpClientUtil类,doGet和doPost方法用于接口调用;

③通过Apache封装好的CloseableHttpClient;

④通过SpringBoot-RestTemplate;

详情可看:https://www.cnblogs.com/swordfall/p/10757499.html

1.被调用方对应controller方法为:

(配置文件application.properties中:spring.application.name=discovery-server)

package cn.zy.nacosdiscoveryserver.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

@RefreshScope
@RestController
@RequestMapping("/discovery")
public class serverController {
    @RequestMapping(value = "/output", method = RequestMethod.GET)
    public String output() {
        return "Server success";
    }
}

2.通过SpringBoot-RestTemplate:

Springboot中调用外部接口方法:
调用方代码:

package cn.zy.nacosdiscoveryconsumer.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/interface")
public class InterfaceController {
    @RequestMapping("/consumer")
    public void out() {
        RestTemplate restTemplate = new RestTemplate();
        String url = "http://localhost:7777/discovery/output";
        String s = restTemplate.getForObject(url, String.class);
        System.out.println(s);
    }

}

3.调用服务方法:

nacos调用服务方法:
首先需要被调用方有动态服务发现功能,其次{@AutoWire自动注入bean–restTemplate (package org.springframework.web.client中)},
!!!注意:这里的restTemplate必须使用@AutoWire注入web.client包的,或者创建一个配置类config在其中方法里new RestTemplate返回并在方法上加@LoadBalanced开启Ribbon集成。不可以直接new RestTemplate使用,否则会识别不出服务名。

使用restTemplate.getForObject(“http://被调用服务名application.name/被调用方法的请求url”)

调用方代码:

package cn.zy.nacosdiscoveryconsumer.controller;

import cn.zycfc.nacosdiscoveryconsumer.util.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/server")
public class ServerController {
    @Autowired
    private Config config;

    @RequestMapping("/consumer")
    public void out() {
        RestTemplate restTemplate=config.restTemplate();
        String url = "http://discovery-server/discovery/output";
        String s = restTemplate.getForObject(url, String.class);
        System.out.println(s);
    }
}

或者调用方代码:

package cn.zy.nacosdiscoveryconsumer.controller;

import cn.zycfc.nacosdiscoveryconsumer.util.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/serverONE")
public class ServerONEController {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/consumer")
    public void out() {
        String url = "http://discovery-server/discovery/output";
        String s = restTemplate.getForObject(url, String.class);
        System.out.println(s);
    }
}

注:直接调用接口常用方法有Appache的CloseableHttpClient工具类或者Springboot的RestTemplate/RestTemplateUtils工具类,传入参数url=调用接口服务的ip地址+"/api/…(接口层级目录)
注册到nacos等工具上进行服务调用常用方法有springboot的restTemplate类,参数url可以将服务的ip地址更换为服务名:url=http://被调用服务名${application.name}/api
/…(被调用方法的请求url)"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值