一个后端项目调用另一个后端项目的接口获取数据

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个后端项目调用另一个后端项目的接口获取数据相关的知识,希望对你有一定的参考价值。

前言

本文不会提供完整代码,主要是提供一种思路,但是配置类和工具类的代码是齐全的。

1.项目需求

一个后端项目B需要获取到另外一个后端项目A从数据库中获取的数据,并插入到相关目B的数据库中。

2.实现流程

1.在后端项目A中写一个接口,就叫它 queryDatas
这个接口的路径,我们这里就随便写一个 http://localhost:8848/test/queryDatas
注意:ThreeTablesData是我写的一个vo

    @PostMapping("/queryDatas")
    public ResultBean queryThreeTablesData() 
        ResultBean resultBean = new ResultBean();
        List<ThreeTablesData> list = statisticsOrderReadService.queryThreeTablesData();
        if (!list.isEmpty()) 
            resultBean.setData(list);
            resultBean.setCode(ErrorCode.CODE_SUCCESS);
            resultBean.setMessage("成功获取到数据");
         else 
            resultBean.setCode(ErrorCode.CODE_UNKNOWN);
            resultBean.setMessage("当前数据为空");
        
        return resultBean;
    

2.在项目B中写一个配置类,就叫它 OneConfig

@Data
@Configuration
public class OneConfig 
    @Value("$projectA.url")
    private String projectAUrl;

为了专业一点,去application-dev.yml中配置一下路径地址

projectA:
  url: "http://localhost:8848/test/queryDatas"

3.新建一个请求工具类,就叫它 HttpUtil

public class HttpUtil 
    public static String post(String url, Map<String, Object> map) 
//        String param = JSONObject.toJSONString(map);
        HttpResponse res = HttpRequest.post(url).connectionTimeout(90000).timeout(90000)
                .contentType("application/json", "UTF-8").bodyText(JSONObject.toJSONString(map))
                .send();
        res.charset("utf-8");
        return res.bodyText();
    

    public static String post(String url, String jsonStr) 
        HttpResponse resp = HttpRequest.post(url).connectionTimeout(60000).timeout(60000)
                .contentType("application/json", StandardCharsets.UTF_8.toString()).body(jsonStr)
                .send();
        resp.charset(StandardCharsets.UTF_8.toString());
        return resp.bodyText();
    

    /**
     * 发送Get请求
     *
     * @param url    : 请求的连接
     * @param params : 请求参数,无参时传null
     * @return
     */
    public static String get(String url, Map<String, String> params) 
        HttpRequest request = HttpRequest.get(url);
        if (params != null) 
            request.query(params);
        
        HttpResponse response = request.send();
        return response.bodyText();
    

4.好的,现在就可以去项目B的实现类中去获取项目A发过来的数据了

// 调用queryDatas接口,插入数据(json)
String tableDatas = HttpUtil.post(OneConfig.getHipayBaseUrl(),new HashMap<>());
// json转JSONObject
JSONObject jsonObject = JSONObject.parseObject(tableDatas);
// 获取code
String code = jsonObject.get("code").toString();
// 获取data
String data = jsonObject.get("data").toString();
// JSONObject转List
List<ThreeTablesData> parseArray = JSONObject.parseArray(data, ThreeTablesData.class);

好的,思路分享到此结束。

注意: 其从项目A传过去的是ResultBean数据类型,其他的类型,json转成List方法不一定相同。

以上是关于一个后端项目调用另一个后端项目的接口获取数据的主要内容,如果未能解决你的问题,请参考以下文章

vue 项目路由权限管理实现

vue调用接口那些事

简单介绍vue获取token实现token登录的示例代码

在前端开发中mock后端数据

Java后端开发:SpringBoot项目中的三层架构与代码角色

高效开发:你的项目有接口聚合服务吗?