JAVA调用Python接口并接收参数(基于SpringBoot)

平常主要业务是写JAVA,但是最近因为工作需要。需要用JAVA去调用Python的接口,然后自己也找了很多方法,最后觉得这种方法是最简单了。(不是唯一的方法,欢迎各位大神来指导)

1、业务需要

需要接收前端传过来的一个图片,然后传给Python的一个OCR的程序,识别一下图片中的文字并保存到数据库中

2、业务实现:

其中接收前端图片,包括存数据库,这些都是一些基础的,这里就不在细说了。重点说一下,如何使用JAVA调用Python的接口并接收Python传回来的参数。

具体使用的是方法是:使用了Spring框架的RestTemplate来调用一个Python服务的接口

1、首先要配置一下RestTemplate

@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

2、具体在业务中实现如下

// 使用RestTemplate发送文件到OCR服务进行识别
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

// 构建请求体
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.Add("File", new FileSystemResource(file));
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

 // OCR服务的API地址
String apiUrl = "http://ip地址:端口号/XXX/xxxx/";

// 发送请求并获取响应
ResponseEntity<RecognitionResult> responseEntity = restTemplate.postForEntity(apiUrl, requestEntity, RecognitionResult.class);

// 处理OCR服务的响应
RecognitionResult recognitionResult = responseEntity.getBody();

3、RestTemplate 简单介绍

RestTemplate 是 Spring 提供的用于访问 REST 服务的模板类,它提供了很多便利的方法来简化 REST 调用。

使用 RestTemplate 有一些优点:

1、集成性: RestTemplate 是 Spring 框架的一部分,因此在 Spring 应用中,它可以方便地与其他 Spring 组件集成,如依赖注入、事务管理等。

2、简化 HTTP 操作: RestTemplate 提供了一种简洁的方式来执行 HTTP 请求,无需手动处理低层的 HTTP 细节,如创建 URLConnection、设置请求头、处理响应等。这使得开发者可以更专注于业务逻辑而不是底层的 HTTP 操作。

3、丰富的功能: RestTemplate 提供了多种方法来处理不同类型的 HTTP 请求,例如 GET、POST、PUT、DELETE 等,支持同步和异步的请求,还支持处理请求和响应的各种格式,包括 JSON、XML、表单等。

4、异常处理: RestTemplate 提供了异常处理机制,方便开发者处理各种可能发生的异常,如连接超时、HTTP 错误等。

5、可扩展性: RestTemplate 可以通过插入不同的 ClientHttpRequestFactory 来支持不同的 HTTP 连接库,例如 Apache HttpClient、OkHttp 等。这使得在需要替换底层 HTTP 客户端时更加灵活。

6、模板方法模式: RestTemplate 使用了模板方法设计模式,定义了执行 HTTP 操作的标准流程,但允许开发者在其中插入自定义的逻辑,以满足特定的需求。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值