Python-fastAPI的学习与使用

我们要学习python,目的不是为了精通python,而是能利用python搭建ai服务。

也就是能达到"用Python调用AI库和构建简单服务"的水平即可,无需追求Pythonic。

安装 python,fastapi等一系列相关服务或者工具

安装python的过程我就不说了,这里我来说下安装fastapi

打开黑窗口(cmd),输入命令:

复制代码
pip install "fastapi[all]"

这会安装:

fastapi - FastAPI 框架
uvicorn[standard] - ASGI 服务器
python-multipart - 表单和文件上传支持
jinja2 - 模板引擎
python-jose - JWT 令牌支持
passlib - 密码哈希
bcrypt - 密码加密
python-dotenv - 环境变量支持。

python编程工具

这里博主用的idea集成了python,所以要用idea编写python语言。

关于idea 如何集成python,也很简单。

idea找到插件位置,下载python即可。

选择创建项目;python,如下

创建之后,我们可以创建main文件夹;会有默认的init类文件,

然后我们输入 from fastapi import FastAPI

如果报错,我们在项目位置打开黑窗口,执行以下命令:

pip install fastapi uvicorn

这个时候就可以正常使用fastApi了.

编程代码

我们编写一段代码

代码解析:

from fastapi import FastAPI

这行代码从< code>fastapi 模块中导入了 FastAPI 类。FastAPI 类是 FastAPI 框架的核心,用于创建 FastAPI 应用程序实例。

app = FastAPI()

这行代码创建了一个 FastAPI 应用实例。与 Flask 不同,FastAPI 不需要传递 name 参数,因为它默认使用当前模块。

@app.get("/")

这是一个装饰器,用于告诉 FastAPI 哪个 URL 应该触发下面的函数,并且指定了 HTTP 方法为 GET。在这个例子中,它指定了根 URL(即网站的主页)。

def read_root():

这是定义了一个名为 read_root 的函数,它将被调用当用户使用 GET 方法访问根 URL 时。

return {"CHINA": "NIUBI"}

这行代码是 read_root 函数的返回值。当用户使用 GET 方法访问根 URL 时,这个 JSON 对象将被发送回用户的浏览器或 API 客户端。

java服务调用python服务

我们在java程序里 利用HTTP 进行调用刚刚我们编写的方法:

可以看到成功获取到了python语言返回的信息。

方法进阶

我们再声明一个get方法

from typing import Union

from fastapi import FastAPI

app =FastAPI()

@app.get("/")

def read_root():

return {"CHINA": "NIUBI"}

@app.get("/test/{id}")

def test(id:int,name:str|None=None):

return{"我是ID":id,"我是Name":name}

复制代码
@app.get("/test/{id}")  :get请求;方法名为test
复制代码
(id:int,name:str|None=None) :两个参数一个id(int类型),一个name(字符串类型,可为空)

其中这两个参数代表的含义不同:

id --是路径参数,指定为整数类型。
q -- 是查询参数,指定为字符串类型或空(None)。

当我们在java服务调用该方法:

复制代码
String info = HttpUtils.doHttpGet("http://127.0.0.1:8000/test/10?name=周树人");
System.out.println(info);


打印信息:{"我是ID":10,"我是Name":"周树人"}

好了,今天学习就到这里了。

另外,大家可以参考下这个网址fastapi学习

相关推荐
星火开发设计22 分钟前
C++ 预处理指令:#include、#define 与条件编译
java·开发语言·c++·学习·算法·知识
BackCatK Chen1 小时前
第 1 篇:软件视角扫盲|TMC2240 软件核心特性 + 学习路径(附工具清单)
c语言·stm32·单片机·学习·电机驱动·保姆级教程·tmc2240
深蓝海拓1 小时前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
理人综艺好会1 小时前
Web学习之用户认证
前端·学习
xiayutian_c1 小时前
Claude code不能直接写ABAP?
ai编程
●VON1 小时前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
AI视觉网奇2 小时前
FBX AnimSequence] 动画长度13与导入帧率30 fps(子帧0.94)不兼容。动画必须与帧边界对齐。
笔记·学习·ue5
RANCE_atttackkk2 小时前
Springboot+langchain4j的RAG检索增强生成
java·开发语言·spring boot·后端·spring·ai·ai编程
woodykissme3 小时前
倒圆角问题解决思路分享
笔记·学习·工艺
黎雁·泠崖3 小时前
Java核心基础API学习总结:从Object到包装类的核心知识体系
java·开发语言·学习