赞
踩
Python在Web开发中面临着哪些挑战,又该如何克服这些挑战呢?在本文中,我们将探讨FastAPI框架如何帮助我们解决这些问题,重燃Python Web开发的火花。
以上都是Python Web开发的一些短板,但是随着技术的发展,如FastAPI框架的出现,可以有效的解决Python Web开发中的一些问题。
FastAPI 是一个现代、快速(高性能)的 web 框架,用于构建 APIs,基于 Python 3.6 类型提示以及 Starlette 和 Pydantic 的强大的性能。FastAPI 对 Python Web 开发的短板进行了以下改进:
因此,FastAPI 在很大程度上改善了 Python Web 开发的一些短板。
安装FastAPI相当简单,只需要使用Python的包管理器pip。在命令行或终端中,输入以下命令:
pip install fastapi
这个命令会下载并安装FastAPI。
FastAPI是异步的,所以还需要一个ASGI服务器,Uvicorn是目前最快的ASGI服务器之一,我们可以安装它:
pip install uvicorn
在main.py文件中输入以下代码:
from fastapi import FastAPI app = FastAPI(title='FastAPI接口文档', description='Fastapi接口文档', version="2.5.0", ) @app.get("/api/login", summary='登录', description='实现登录功能', tags=['登录']) def login(): return {"Hello": "World"} @app.get("/api/login_out", summary='登出', description='实现登出功能', tags=['登出']) def login_out(): return {"Hello": "World"} @app.get("/three/{params}", summary='测试', description='实现测试的功能', tags=['测试']) def test(params: str = None): return {"Hello": params}
了解FastAPI程序结构:
第一步,导入FastAPI
from fastapi import FastAPI
第二步,创建一个app实例
app = FastAPI()
第三步,编写一个 路径操作装饰器
@app.get("/")
如图可见我们输入的参数,被返回了
GET方式的参数有两种,一种是路径参数,一种是查询参数。
路径参数: 在FastAPI中,路径参数是指在URL路径中的一部分,通常用于指定资源的唯一标识符。可以通过在路径操作函数的参数中定义同名的变量来声明路径参数。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
在这个例子中,item_id就是一个路径参数。当你访问如/items/5这样的URL时,item_id的值就会被设置为5,FastAPI会自动识别并解析路径参数,无需进行任何额外的配置。此外,FastAPI还支持路径参数的类型注解,可以通过类型注解来指定路径参数的类型,FastAPI会自动进行类型检查和转换。
查询参数: 在FastAPI中,查询参数是指URL中跟在问号后面的键值对,通常用于提供非必要的额外信息。可以通过在路径操作函数的参数中定义默认值来声明查询参数。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
在这个例子中,skip和limit就是查询参数,我们指定了skip和limit的类型为int,所以如果访问如/items/?skip=foo&limit=10这样的URL,FastAPI会返回一个明确的错误,告诉你skip的值必须是整数,当你访问如/items/?skip=20&limit=10这样的URL时,skip的值就会被设置为20,limit的值就会被设置为10,FastAPI会自动识别并解析查询参数,无需进行任何额外的配置。
不使用 Pydantic的栗子:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.post("/items")
async def read_item(item: dict):
return {"item": item}
用 postman 发起请求,选 JSON 格式,因为接收的是 dict,所以 FastAPI 会自动将 JSON 字符串转换为 dict
使用 Pydantic的栗子:
from fastapi import FastAPI from typing import Optional from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str age: Optional[int] = None gender: str hobby: str = None @app.post("/items/") async def create_item(item: Item): return item
参数指定为 Pydantic 模型后,FastAPI将请求体识别为 JSON 字符串,验证数据,如果验证失败,会返回一个清晰的错误,准确指出错误数据的位置和信息,item 会接收到完整的请求体数据,拥有所有属性及其类型,IDE 也会给予对应的智能提示
运行命令: uvicorn main:app --reload
注意:运行命令app前面那个是文件位置,要以实际的文件名为准
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
FastAPI文档形式:交互式API文档、备用API文档
在浏览器中请求 [http://127.0.0.1:8000/docs],显示交互式API文档, 自动交互式 API 文档(由 Swagger UI 提供,Swagger UI是一个非常流行的API文档生成工具,它可以生成交互式的、易于理解的API文档),如图:
此外,还可以通过在FastAPI应用对象上设置.title, .description 和 .version 属性来配置API的整体描述信息。这些信息将会显示在自动生成的API文档页面的顶部。
此时还可以单击某个具体的API,然后单击Try it out,然后填写参数,并单击Execute按钮来执行。
在浏览器中请求 http://127.0.0.1:8000/redoc ,显示备用API文档,备用的自动交互式文档(由 ReDoc 提供),如图:
总结:本篇文章介绍了FastAPI的基础部分,总的来说,FastAPI是一个功能强大、易用、高效的Web开发框架,无论你是Python新手,还是有经验的开发者,FastAPI都能帮助你更高效、更便捷地构建出高性能的Web应用。
FastAPI作为Python Web开发新的利器,已经吸引了大量的开发者的关注。让我们一起探索和学习,用FastAPI构建出更好的Web应用,重燃Python Web开发的火花!
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/925854
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。