行业资讯 2025年08月6日
0 收藏 0 点赞 321 浏览 3948 个字
摘要 :

文章目录 一、FastAPI的安装 二、启动服务 三、常用配置 四、路由使用 五、FastAPI的亮点 今天来唠唠如何用Python和FastAPI开发Web接口。这俩组合起来可太香了,不仅开……




  • 一、FastAPI的安装
  • 二、启动服务
  • 三、常用配置
  • 四、路由使用
  • 五、FastAPI的亮点

今天来唠唠如何用Python和FastAPI开发Web接口。这俩组合起来可太香了,不仅开发效率高,还有不少实用的功能。这篇文章会从安装FastAPI开始,一步步带你搞定启动服务、配置、路由使用,最后还会讲讲FastAPI的亮点。不管你是开发小白还是想提升技术的老鸟,都能从这儿收获满满,话不多说,咱们开始吧!

一、FastAPI的安装

在正式开启开发之旅前,得先把FastAPI安装好。这里有个小知识要记住,FastAPI自己没办法提供ASGI服务,所以得搭配Uvicorn这类ASGI框架一起用。也就是说,我们至少要安装FastAPI和Uvicorn这两个模块,安装命令很简单:

pip install fastapi uvicorn

运行这个命令,等待安装完成,咱们就离成功更近一步啦。

二、启动服务

安装好相关模块后,就可以开始写代码启动服务了。下面这段代码就是启动服务的基础示例:

from fastapi import FastAPI
import uvicorn

# 创建一个FastAPI应用实例,这就像是搭建了一个Web接口的“房子”
app = FastAPI()

# 使用@app.get装饰器定义一个处理HTTP GET请求的路由,路径是根路径“/”
# 当用户访问根路径时,会执行这个函数
@app.get(\"/\")
def home():
    # 返回一个包含“Hello”和“World1”的字典,这就是给用户的响应内容
    return {\"Hello\":\"World1\"}

# 当这个脚本作为主程序运行时,执行下面的代码
if __name__ == \'__main__\':
    # 使用uvicorn.run来启动服务,让我们的FastAPI应用跑起来
    uvicorn.run(app)

运行这段代码后,在浏览器地址栏输入http://127.0.0.1:8000,就能访问到我们开发的Web接口啦,是不是还挺有成就感的?

三、常用配置

服务跑起来了,接下来看看一些常用的配置,这些配置能让我们的Web接口用起来更顺手。

1)访问地址配置:默认情况下,启动服务后只能通过localhost或者127.0.0.1来访问站点。但要是想通过本地(服务器)的真实IP访问,就得设置启动服务的参数,加上host配置,就像这样:

uvicorn.run(\"main:app\", host=\"0.0.0.0\")

host=\"0.0.0.0\"这个配置的意思就是允许通过任何网络接口来访问我们的服务。

2)端口配置:uvicorn服务默认的端口是8000,如果想自定义端口号,可以在启动服务时增加port参数,比如:

uvicorn.run(\"main:app\", host=\"0.0.0.0\", port=5000)

这样,我们的服务就会在5000端口上运行,访问的时候就得用http://127.0.0.1:5000啦。

3)热加载配置:uvicorn服务默认是关闭热加载功能的。热加载有啥好处呢?就是当我们修改了代码,不用手动重启服务,它能自动检测到变化并重新加载,提高开发效率。要打开热加载,在启动服务时加上reload参数就行:

uvicorn.run(\"main:app\", host=\"0.0.0.0\", port=5000, reload=True)

不过这里有个小问题,有时候热加载响应特别慢,甚至不生效。这可能是uvicorn版本问题,也可能和新版Pycharm有关。遇到这种情况,可以试试uvicorn的0.21.0版本。还有,如果只想让项目里某个目录的热加载生效,可以搭配watchgod服务使用。

4)watchgod服务安装与使用

安装watchgod:要使用watchgod,先得安装它,安装命令如下:

pip install watchgod

watchgod使用方法:安装好后,在启动服务时指定reload_dirs参数,就能指定热加载生效的目录,其他目录的热加载就不会起作用了。比如:

uvicorn.run(\"main:app\", host=\"0.0.0.0\", port=5000, reload=True, reload_dirs=\"src\")

这就表示只有src目录下的文件发生变化时,热加载才会生效。

四、路由使用

路由在Web接口开发里可太重要了,它决定了不同的请求该由哪个函数来处理。在FastAPI里,路由的使用很灵活。

1)定义路由:FastAPI提供了好多路由装饰器,用来处理不同类型的HTTP和WebSocket事件。常见的有:

  • @app.get():专门处理HTTP GET请求,比如获取数据的时候就可以用它。
  • @app.post():处理HTTP POST请求,像提交表单数据这种场景就很适用。
  • @app.put():用于处理HTTP PUT请求,一般用来更新资源。
  • @app.delete():处理HTTP DELETE请求,删除资源就靠它。
  • 还有@app.options()@app.patch()@app.head()@app.trace()等,分别处理对应的HTTP请求。

处理WebSocket相关事件的有@app.connect()@app.websocket()
下面是一些使用示例:


@app.get(\"/\")
def home():
\"\"\"
get路由使用示例,返回一个包含问候信息的字典
:return: 包含“Hello”和“World”的字典
\"\"\"
return {\"Hello\": \"World\"}

@app.post(\"/login\")
def login():
\"\"\"
post路由使用示例,模拟登录成功返回状态码
:return: 包含状态码“200”的字典
\"\"\"
return {\"code\": 200}

@app.put(\"/items/{item_id}\")
async def update_item(item_id: int):
\"\"\"
put路由使用示例,根据传入的item_id更新资源
:param item_id: 资源的唯一标识,用于确定要更新的具体资源
:return: 包含更新的item_id的字典
\"\"\"
return {\"item_id\": item_id}

@app.delete(\"/del/items/{item_id}\")
async def delete_item(item_id: int):
\"\"\"
delete路由使用示例,根据传入的item_id删除资源
:param item_id: 要删除资源的唯一标识
:return: 包含被删除item_id的字典
\"\"\"
return {\"item_id\": item_id}

2)路由参数:在FastAPI里,路由参数主要有路径参数、查询参数和请求参数这几类。
路径参数:路径参数是从URL路径里提取值的,就像给资源贴了个“标签”,通过这个“标签”能直接找到对应的资源。比如下面这个例子,`item_id`就是路径参数,通过它可以获取特定的物品信息:


@app.get(\"/item/{item_id}\")
def getItem(item_id: int):
    return {\"item_id\": item_id}

3)查询参数:查询参数是从URL的查询字符串里提取值的,它更灵活,不会固定路由地址。在下面的代码里,`item_id`就是查询参数,它可以不传,也能直接拼在路由路径里访问:

@app.get(\"/item\")
def getItem2(item_id: int = None):
    return {\"item_id\": item_id}

4)请求体参数:这里以常见的json数据格式为例,把json数据作为请求体来发起请求。先定义一个数据模型,再在路由函数里使用:

from pydantic import BaseModel

class Item(BaseModel):
    id: int
    name: str

@app.put(\"/create/item\")
def create_item(item: Item):
    return item

这里的Item类就定义了请求体的数据结构,create_item函数接收符合这个结构的请求体数据并返回。

五、FastAPI的亮点

用了FastAPI之后,我发现它有两个特别好用的地方,必须得给大家分享分享。

1)自动序列化:以前用Flask的时候,返回字典数据还得用jsonify进行序列化,有点麻烦。但FastAPI就方便多了,它能自动把返回的字典数据序列化。就算是复杂的数据结构,只要用Pydantic定义好,也能轻松实现自动化处理,就像上面请求体的例子一样。

2)自动生成API文档:FastAPI默认支持OpenAPI、Swagger UI和ReDoc。这意味着啥呢?就是不用我们额外费功夫,它就能自动帮我们记录和生成API文档,我们定义的所有API信息都能在文档里查看。查看方式如下:


# 访问openapi类型文档
http://127.0.0.1:5000/openapi.json
# 访问Swagger UI类型文档
http://127.0.0.1:5000/docs
# 访问ReDoc类型文档
http://127.0.0.1:5000/redoc

通过这些文档,我们可以清楚地看到每个API的请求方式、参数、返回值等信息,对开发和调试都非常有帮助。Python如何集成FastAPI开发Web接口

好啦,关于用Python和FastAPI开发Web接口的内容就讲到这儿啦。希望大家看完这篇文章,都能顺利掌握这项技能,在开发的路上更进一步!要是在实践过程中有啥问题,欢迎一起交流讨论。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/10246.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号