Java服务器调用Python服务器进行交互:基于Http协议的Restful风格调用(Springboot/FastApi)

这篇具有很好参考价值的文章主要介绍了Java服务器调用Python服务器进行交互:基于Http协议的Restful风格调用(Springboot/FastApi)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现Java服务器调用Python服务器进行交互以及数据传输,可采用以下方法,亲测有效:

  • 基于Restful风格进行请求调用:
  • 框架
    • Java服务器采用Springboot框架进行搭建服务
    • python服务器采用FastApi框架进行搭建服务
  • 思路:前端–>Java–>python–>Java–>前端
  • 代码设计:Axios->@PostMapping->请求Python(下文描述)–>@app.get/@app.Post
    • 请求Python方式:Java可以采用Spring框架的RestTemplate进行请求Python服务器,或者使用原生JavaEE进行HttpRequest请求访问Python服务器。
  • 以下将描述两种调用的方法:

1.基于RestTemplate进行请求Python服务器
Java:

 @GetMapping("/api/length")
    public String getAiAssistant(String text) {
        // 设置请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        text="我要喝咖啡!!";
        Map<String,String> requestBody =new HashMap<>();
        requestBody.put("text",text);
        requestBody.put("text2","再来一个~~~");
        // 设置请求体数据
//         requestBody = "{\"text\": \"" + text + "\"}";
//        String requestBody2 = "{\"text2\": \"" + text + "\"}";
        String url = "http://192.168.1.11:8000/api/length";
        String pythonUrl = jackieConfig.getPythonUrl();
        // 创建HttpEntity对象,将请求头和请求体封装起来
        //可以基于这个进行修改
//        HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);
        HttpEntity<Map> requestEntity = new HttpEntity<>(requestBody, headers);
        System.out.println("requestEntity = " + requestEntity +"+类型:"+requestEntity.getClass());

        // 发送POST请求,并获取响应结果
        RestTemplate restTemplate = new RestTemplate();
        System.out.println("restTemplate = " + restTemplate+"+类型:"+restTemplate.getClass());
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, requestEntity, String.class);
        System.out.println("responseEntity = " + responseEntity +"+类型:"+responseEntity.getClass());
        if (responseEntity.getStatusCode().is2xxSuccessful()) {
            String response = responseEntity.getBody();
            System.out.println("response = " + response+"+类型:"+response.getClass());
            return response;
        } else {
            // 处理请求失败的情况
            return null;
        }
    }

python:

 # 通过响应体传递参数
@app.post("/api/length")
def get_length(data: dict):
    print(data)
    text = data["text"]
    length = len(text)
    return {"data": data}

2.基于HttpRequest进行请求Python服务器
Java:

 @PostMapping("/page")
    public String DocGeneration( String data) {
        data="我要喝咖啡!!";
        SysUser TenantUser = SecurityUtils.getLoginUser().getUser();
        SysTenant sysTenant = sysTenantService.selectSysTenantById(TenantUser.getTenantId());
        String apiKey = sysTenant.getApiKey();
        String apiStatus = String.valueOf(sysTenant.getApiStatus());
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("apiKey",apiKey);
        paramMap.put("model", apiStatus);
        paramMap.put("context", data);
        String stringbody =  String.valueOf(new JSONObject(paramMap));
        String responseBody =null;
        try
        {
            responseBody = HttpRequest.post(pythonUrl + "/docGeneration/page")
                    .header("Authorization", apiKey)
                    .header("Content-Type", "application/json")
                    .body(stringbody)
                    .execute()
                    .body();
            System.out.println("responseBody = " + responseBody);


        } catch (HttpException e) {
            return "出现了异常";
        } catch (ConvertException e) {
            return "出现了异常";
        }

        System.out.println("数据对接");
        return responseBody;



    }

java返回数据:
java去调用fastapi接口,项目实战,java,服务器,python

python返回数据:
java去调用fastapi接口,项目实战,java,服务器,python

Python:文章来源地址https://www.toymoban.com/news/detail-858565.html

class Data(BaseModel):
    apiKey: str
    context: str
    model: str

@app.post("/docGeneration/page")
async def docGeneration(data: Data):
    print(data)
    return {"data": data}


到了这里,关于Java服务器调用Python服务器进行交互:基于Http协议的Restful风格调用(Springboot/FastApi)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【常用bsub指令介绍】使用bsub命令提交作业、开启交互式窗口,在集群服务器上用pdb进行代码调试

    在一个服务器集群中,有很多的人要使用,却只有很少的GPU。LSF作业调度系统则是对每个用户提交的作业和需要使用的GPU进行调度。一般使用bsub命令来将待运行的作业提交到集群上。 用bsub run.sh提交了作业,一般是作业已经可以成功跑起来,提交了作业后直接等作业运行结束

    2024年01月22日
    浏览(57)
  • WAMP服务器对python进行配置

    WAMP服务器中安装python D:wampbinapacheApache2.4.4confhttpd.conf // 打开找到Wamp安装目录下,apache的配置文件 将该配置文件备份一份 LoadModule cgi_module modules/mod_cgi.so // 找到配置文件中该行,把行前面的#去掉。 Options Indexes FollowSymLinks // 找到配置文件中该行,在FollowSymLinks后添加Exec

    2024年02月09日
    浏览(34)
  • java使用MinIO库进行存储服务器的使用

    导入相关库:首先,在 Java 项目中,你需要导入与存储服务器通信所需的库。对于 minIO,你可以使用 MinIO Java 客户端库。你可以通过将以下依赖项添加到 Maven 项目的 pom.xml 文件中引入该库: 创建连接:使用提供的存储服务器的访问密钥和密码,创建与存储服务器的连接。以

    2024年02月14日
    浏览(30)
  • 基于 ESP32 创建 HTTP Server 服务器,支持载入文件到服务器,并对载入文件进行删除管理

    软件编程指南参见:HTTP 服务器 任意一款 ESP32 系列开发板 2.4GHz 路由器热点 准备各种格式的文件 可基于 esp-idf/examples/protocols/http_server /file_serving 例程进行测试 只需要设置 ESP32 连接的 2.4GHz 的 WiFi 热点 即可 menuconfig — Example Connection Configuration — WiFi SSID — WiFi Password 下载固件

    2024年02月16日
    浏览(37)
  • Java 两台服务器间使用FTP进行文件传输

    背景:需要把服务器A中的文件拷贝至服务器B中,要求使用FTP进行传输,当文件传输未完成时文件是tmp格式的,传输完毕后显示为原格式(此处是grib2)。

    2024年02月15日
    浏览(30)
  • Java之 Spring Cloud 微服务 Eureka (第一个阶段)【二】【SpringBoot项目实现商品服务器端是调用】

    | Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用】 | | | Java之 Spring Cloud 微服务的开源配置中心Apollo(第四个阶段)【三】【SpringBoot项目实现商品服务器端调用】 | | Java之 Spring Cloud 微服务 Eureka 【二】【SpringBoot项

    2024年04月12日
    浏览(31)
  • VScode在远程服务器进行python代码的调试【conda环境】

    其中vscode中需要安装扩展:remote ssh 装完扩展后本地多个图标,如下图所示: 当然,初始状态不是这样(因为我已经配置好了哈),你需要点击“+”,然后在框框中输入用户名和服务器IP地址 进行相应的配置 ! 点击上面的设置按钮可以进行.ssh/config的配置文件编辑,点击+好来

    2024年02月13日
    浏览(24)
  • java静默打印PDF(可实现生产环境下服务器写入PDF模板,然后调用客户端打印机打印)

    需求 写这个的原因主要是因为当时项目中的打印功能是用户打印标签时,每次点击打印是通过把PDF文件下载到客户端浏览器,然后需要通过浏览器去点击打印机实现打印,就非常麻烦,每次都步骤非常复杂,而且每次参数都要重新设置。于是就想着怎么通过java实现自己调用

    2024年02月13日
    浏览(32)
  • Java 中,使用 HttpServletResponse 对象将服务器上的文件响应到客户端浏览器进行下载

    在服务器端,使用 FileInputStream 打开要下载的文件,并将其读取到字节数组中。 2.设置 HttpServletResponse 的响应头信息,告诉浏览器需要下载文件,并指定文件名和文件类型 其中,Content-Type 表示响应内容的类型,这里设置为 application/octet-stream,表示二进制流。Content-Length 表示

    2024年02月13日
    浏览(55)
  • 基于 Python 实现一个简单的 HTTP 服务器

    文章这个题目,让我想起了大学时上《Unix 网络编程》这门专业课的家庭作业,题目几乎一模一样。 HTTP 服务器工作在服务端,主要功能包括处理来自客户端的请求,管理网络资源,以及生成和发送响应给客户端。在实际应用中,HTTP 服务器不仅限于传输 HTML 文档;它还可以传

    2024年03月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包