使用restTemplate 使用 POST 调用python外部接口

场景:在springboot中调用python提供的接口

1、准备内部类(也可以写在model中)

	@Data
    class TestVO {
     
        public Set<String> nos;
        public Set<Integer> deliveryDetailIds;
    }

2、使用 RestTemplate 来进行跨环境RPC调用python接口

    public List<DeliveryDetailVO> getData2Python(Set<String> nos, Set<Integer> deliveryDetailIds) {
     
        List<DeliveryDetailVO> deliveryDetailVOList = new ArrayList<>();
        RestTemplate restTemplate = new RestTemplate();

        // 从yaml 种获取配置的 url
        String url =  pythonConfigModel.getUrl()+ "wmsDelivery/queryDeliveryDetailsByNos";

        if (CollectionUtils.isEmpty(nos)) {
     
            throw new BizException("发货通知单号不能为空");
        }

        TestVO testVO = new TestVO();
        testVO.setNos(nos);
        testVO.setDeliveryDetailIds(deliveryDetailIds);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, testVO, String.class);
        JSONObject jsonObject = JSONObject.parseObject(responseEntity.getBody());


        boolean flag = (boolean) jsonObject.get("success");
        if (flag == true) {
     
            return JSON.parseObject(jsonObject.get("obj").toString(), new TypeReference<List<DeliveryDetailVO>>() {
     
            });
        }
        return deliveryDetailVOList;
    }
注意:这里为yaml配置区分生产、灰度、测试等
pythonConfigModel.getUrl()+ “wmsDelivery/queryDeliveryDetailsByNos”;

你可能感兴趣的:(python,springboot,java,spring,boot,java,python,接口)