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


    前言

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

    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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    @Data
    @Configuration
    public class OneConfig {
        @Value("${projectA.url}")
        private String projectAUrl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    projectA:
      url: "http://localhost:8848/test/queryDatas"
    
    • 1
    • 2

    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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

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

  • 相关阅读:
    16/32/64位操作系统下,各种变量类型分别占多少字节
    Makefile入门(三)
    Domino/Notes 9.0.x和10.0.x将于2024年6月1日停止支持以及简明的HCL Domino授权模式
    HTML期末作业-基于HTML+CSS+JavaScript制作学生信息管理系统模板
    数据库3、4、5章作业
    什么样的跨网数据摆渡系统,能够减少数据泄密的风险?
    超级简单的机器学习入门
    【Redis】Zset有序集合
    【42STL-函数对象使用详情】
    Flutter快学快用07 状态管理:Flutter 状态管理及对比选型
  • 原文地址:https://blog.csdn.net/m0_54355172/article/details/126028044