给大家推荐一个好用的chatgpt镜像站
ChatterAI - 高级AI助手https://www.chatterai.top/
可以用来聊天、写代码、问问题、写文案等等,效果和官网的chatgpt一模一样
前言:
我用的是pycharm专业版(试用一个月)
下载地址:PyCharm: The only Python IDE you need
下载完成以后直接点击创建新项目:选择FastAPI即可
正文:
完事以后,是这样一个程序 我们先来分析一下
示例代码分析:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello/{name}")
async def say_hello(name: str):
return {"message": f"Hello {name}"}
代码分析:
-
from fastapi import FastAPI
: 这一行导入了FastAPI
类,这是构建 FastAPI 应用的核心。 -
app = FastAPI()
: 这一行创建了一个FastAPI
实例,通常命名为app
。这个实例是你的 Web 应用。 -
@app.get("/")
: 这是一个装饰器,它告诉 FastAPI 当收到一个对根路径/
的 HTTP GET 请求时,应该调用下面的函数root()
。 -
async def root():
: 这是一个异步函数,它处理对根路径/
的 GET 请求。async
关键字表明这是一个协程,可以与其他异步任务并发执行,这使得 FastAPI 应用在处理 I/O 密集型任务时非常高效。 -
return {"message": "Hello World"}
: 这个函数返回一个 Python 字典。FastAPI 会自动将这个字典转换为 JSON 响应。所以,当你访问根路径/
时,你会收到一个 JSON 响应:{"message": "Hello World"}
。 -
@app.get("/hello/{name}")
: 这是一个另一个装饰器,它定义了一个路径参数/hello/{name}
。{name}
是一个路径参数,它的值会被传递给下面的函数say_hello()
。同样,这是一个处理 HTTP GET 请求的路由。 -
async def say_hello(name: str):
: 这是一个异步函数,它处理对/hello/{name}
的 GET 请求。注意,函数参数name: str
与路径参数{name}
相匹配,并且类型被声明为字符串。FastAPI 会自动进行路径参数的类型验证。 -
return {"message": f"Hello {name}"}
: 这个函数使用 f-string 创建一个包含传入的name
的字典,并将其作为 JSON 响应返回。例如,如果你访问/hello/Alice
,你将收到{"message": "Hello Alice"}
。
关键名词分析:
async def root():
- 定义了一个异步函数 root,它是处理该路由的逻辑。
- async 表示这个函数是异步的,允许 FastAPI 在处理请求时利用 Python 的异步 I/O 特性(基于 asyncio)。
- 异步函数特别适合处理 I/O 密集型操作(如数据库查询、外部 API 调用),因为它允许服务器在等待 I/O 操作完成时处理其他请求。
- 函数名 root 是任意的,但通常命名为与路由功能相关的名称,这里表示“根”端点。
Uvicorn:
一个基于 Python 的 ASGI 服务器,用于运行支持异步 I/O 的 Web 应用程序。它是 FastAPI 官方推荐的服务器,也是许多 Python 异步 Web 框架的默认选择。
- 全称:Uvicorn(发音类似于 "unicorn",独角兽)。
- 核心功能:处理 HTTP 和 WebSocket 请求,支持异步事件循环,高效运行异步 Web 应用。
- 基于:Python 的 asyncio 库,结合 uvloop(高性能事件循环)和 httptools(高效 HTTP 解析)。
- 许可证:BSD 许可证,开源且免费。
Uvicorn 的设计目标是提供高性能、轻量级和易于使用的服务器,特别适合现代异步 Web 框架。
ASGI服务器:
ASGI(Asynchronous Server Gateway Interface)服务器 是一个用于运行 Python 异步 Web 应用的服务器,负责处理 HTTP 请求、WebSocket 连接等网络通信,遵循 ASGI 规范。ASGI 是 WSGI(同步 Web 服务器接口)的异步扩展,专为支持异步 I/O 的 Python 框架(如 FastAPI、Starlette、Django Channels)设计。
需要注意的是:
ASGI 服务器(如 Uvicorn、Daphne、Hypercorn)不是一台物理电脑,也不是硬件,而是运行在电脑上的软件。具体来说
它是一个服务器软件,是一个程序,负责处理网络请求(HTTP、WebSocket 等),并与 Web 应用(如 FastAPI 应用)交互;它运行在操作系统(如 Linux、Windows、macOS)上,监听特定端口(如 8000),接收客户端请求,调用应用逻辑,返回响应;例如,Uvicorn 是一个 Python 程序,执行时充当“服务器”的角色,管理网络通信。
如何运行这个程序:
第一步:安装uvicorn,终端执行命令【pip install uvicorn】
第二步:用uvicorn启动程序:终端执行命令【uvicorn main:app --reload】
可以看到程序正在运行
如何更改监听的端口号呢?
启动程序时直接指定端口号:终端执行命令【uvicorn main:app --port 8080】
测试程序执行的效果:
方法1:最简单就是:直接在浏览器窗口打开网址:【http://127.0.0.1:8000/】
方法2:win+r 执行命令行指令 【http://127.0.0.1:8000/】
增加一个新的路径
直接仿照着写一个:
@app.get("/wxr/ai")
async def say_hello_kao():
return {"message": "hello wxrai"}
看一下测试的效果:
完美!!!
接下来的学习:
第一:将api的返回用函数方式实现
第二:搭建一个简单的前端应用,发送api