后端FastAPI—分析示例程序

给大家推荐一个好用的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}"}

代码分析:

  1. from fastapi import FastAPI: 这一行导入了 FastAPI 类,这是构建 FastAPI 应用的核心。

  2. app = FastAPI(): 这一行创建了一个 FastAPI 实例,通常命名为 app。这个实例是你的 Web 应用。

  3. @app.get("/"): 这是一个装饰器,它告诉 FastAPI 当收到一个对根路径 / 的 HTTP GET 请求时,应该调用下面的函数 root()

  4. async def root():: 这是一个异步函数,它处理对根路径 / 的 GET 请求。async 关键字表明这是一个协程,可以与其他异步任务并发执行,这使得 FastAPI 应用在处理 I/O 密集型任务时非常高效。

  5. return {"message": "Hello World"}: 这个函数返回一个 Python 字典。FastAPI 会自动将这个字典转换为 JSON 响应。所以,当你访问根路径 / 时,你会收到一个 JSON 响应:{"message": "Hello World"}

  6. @app.get("/hello/{name}"): 这是一个另一个装饰器,它定义了一个路径参数 /hello/{name}{name} 是一个路径参数,它的值会被传递给下面的函数 say_hello()。同样,这是一个处理 HTTP GET 请求的路由。

  7. async def say_hello(name: str):: 这是一个异步函数,它处理对 /hello/{name} 的 GET 请求。注意,函数参数 name: str 与路径参数 {name} 相匹配,并且类型被声明为字符串。FastAPI 会自动进行路径参数的类型验证。

  8. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值