Python 步伐与 Java 体系集成:通过 FastAPI 实现 HTTP 接口

[复制链接]
发表于 2025-12-5 20:39:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
要将你的 Python 步伐封装为一个 API 服务,使得前后端 Java 体系可以大概通过 HTTP 调用,你可以利用 FastAPI 框架来实现。这是一个当代的、快速的 Web 框架,特别适实用于构建 APIs。FastAPI 支持主动天生 OpenAPI 文档,且性能非常高,可以大概资助你快速将 Python 逻辑袒露为 HTTP 服务。
以下是一个具体的步调分析,引导你怎样用 FastAPI 将 Python 步伐封装为 HTTP API,以便 Java 步伐通过 HTTP 举行访问。
1. 安装 FastAPI 和 Uvicorn

起首,你须要安装 FastAPI 和 Uvicorn(FastAPI 保举的 ASGI 服务器):
  1. pip install fastapi uvicorn
复制代码
2. 创建一个简朴的 FastAPI 应用

假设你已经有了一些 Python 的业务逻辑代码,接下来你可以将这些代码通过 FastAPI 封装成 API。假设你有一个简朴的 Python 函数如下:
  1. # 假设这是你的 Python 逻辑代码
  2. def process_data(data):
  3.     return {"message": f"Processed data: {data}"}
复制代码
你可以将这个函数袒露为一个 HTTP 接口,通过 FastAPI 来实现。创建一个 main.py 文件,作为 FastAPI 应用的入口。
  1. # main.py
  2. from fastapi import FastAPI
  3. from pydantic import BaseModel
  4. from your_module import process_data  # 引入你的业务逻辑函数
  5. # 创建 FastAPI 应用
  6. app = FastAPI()
  7. # 定义一个请求体的 Pydantic 模型,表示接收的数据
  8. class DataRequest(BaseModel):
  9.     data: str
  10. # 定义一个 POST 请求的接口
  11. @app.post("/process/")
  12. async def process(request: DataRequest):
  13.     # 调用你的 Python 业务逻辑
  14.     result = process_data(request.data)
  15.     return result
复制代码
3. 运行 FastAPI 应用

运行 FastAPI 应用,你可以通过 Uvicorn 启动它:
  1. uvicorn main:app --reload
复制代码
这个下令会启动一个开发服务器,默认环境下,FastAPI 会在 http://127.0.0.1:8000 上运行。


  • --reload 选项是用来在代码变更时主动重启服务器,恰当开发时利用。
4. Java 客户端调用 FastAPI 接口

假设你已经将 FastAPI 应用乐成运行在某个服务器上,Java 前后端可以通过 HTTP 哀求调用这个 API。你可以利用 Java 中的 HTTP 客户端(如 HttpClient 或第三方库如 OkHttp)来发送哀求。
利用 Java 的 HttpClient 发送哀求

  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. import java.net.http.HttpHeaders;
  6. import java.nio.charset.StandardCharsets;
  7. import com.fasterxml.jackson.databind.ObjectMapper;
  8. public class FastAPIClient {
  9.     public static void main(String[] args) {
  10.         try {
  11.             // 创建 HttpClient
  12.             HttpClient client = HttpClient.newHttpClient();
  13.             
  14.             // 构造请求体
  15.             String jsonRequest = "{"data": "Hello, FastAPI!"}";
  16.             
  17.             // 创建 POST 请求
  18.             HttpRequest request = HttpRequest.newBuilder()
  19.                 .uri(URI.create("http://127.0.0.1:8000/process/"))
  20.                 .header("Content-Type", "application/json")
  21.                 .POST(HttpRequest.BodyPublishers.ofString(jsonRequest))
  22.                 .build();
  23.             
  24.             // 发送请求并接收响应
  25.             HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  26.             
  27.             // 输出响应
  28.             System.out.println("Response status code: " + response.statusCode());
  29.             System.out.println("Response body: " + response.body());
  30.             
  31.         } catch (Exception e) {
  32.             e.printStackTrace();
  33.         }
  34.     }
  35. }
复制代码
利用 OkHttp 发送哀求

OkHttp 是一个常用的第三方 HTTP 客户端库,可以简化 HTTP 哀求的代码:
  1. import okhttp3.*;
  2. public class FastAPIClient {
  3.     public static void main(String[] args) throws Exception {
  4.         // 创建 OkHttpClient 实例
  5.         OkHttpClient client = new OkHttpClient();
  6.         // 创建 JSON 请求体
  7.         String json = "{"data": "Hello, FastAPI!"}";
  8.         RequestBody body = RequestBody.create(MediaType.get("application/json; charset=utf-8"), json);
  9.         // 创建 POST 请求
  10.         Request request = new Request.Builder()
  11.             .url("http://127.0.0.1:8000/process/")
  12.             .post(body)
  13.             .build();
  14.         // 发送请求并获取响应
  15.         try (Response response = client.newCall(request).execute()) {
  16.             // 输出响应
  17.             System.out.println("Response code: " + response.code());
  18.             System.out.println("Response body: " + response.body().string());
  19.         }
  20.     }
  21. }
复制代码
5. 添加 CORS 支持(可选)

如果你的前后端 Java 体系和 FastAPI 后端摆设在差别的域名或端口上,大概须要启用 CORS(跨源资源共享)。可以通过 FastAPI 内置的 CORSMiddleware 来办理这个题目:
  1. from fastapi.middleware.cors import CORSMiddleware
  2. # 设置允许的跨域来源
  3. app.add_middleware(
  4.     CORSMiddleware,
  5.     allow_origins=["*"],  # 允许所有域名跨域访问(也可以指定具体的域名)
  6.     allow_credentials=True,
  7.     allow_methods=["*"],  # 允许所有HTTP方法
  8.     allow_headers=["*"],  # 允许所有请求头
  9. )
复制代码
6. API 文档和测试

FastAPI 提供了主动天生的 OpenAPI 文档,你可以在欣赏器中访问以下 URL 来查察和测试你的 API:


  • http://127.0.0.1:8000/docs — Swagger UI 界面
  • http://127.0.0.1:8000/redoc — Redoc 文档界面
你可以通过这些文档页面来测试接口、查察哀求/相应示例等。
总结

通过上述步调,你可以利用 FastAPI 将你的 Python 步伐封装为一个 HTTP API,使得 Java 客户端可以大概通过 HTTP 哀求来调用你的 Python 服务。FastAPI 的高性能、易用性和主动文档天生使得它成为一个非常适实用来构建 RESTful APIs 的框架。
在实际应用中,你大概还须要思量其他功能,如认证、日记记载、非常处置惩罚等,FastAPI 都能很好地支持这些需求。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表