Python - 【FastAPI】框架配置搭建基本使用

这篇具有很好参考价值的文章主要介绍了Python - 【FastAPI】框架配置搭建基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 前言

之前在面试的时候面试官有提到过这个框架,但是个人在之前的项目中没有用到过,只是有听过,并没有实际的应用,因此,个人自己研究了一下,这是个新型的框架,使用起来相对挺简单。FastAPI是一个基于Python的现代Web框架,它具有快速构建高性能API的特点。
中文文档:https://fastapi.tiangolo.com/zh/

二. Django,Flask,FastAPI区别

当选择一个适合你的项目的Python Web框架时,你可能会考虑以下几个方面:性能、开发难度和推广程度。在这里,我们将比较Django、Flask和FastAPI这三个常用的框架,深入探讨它们的优点和缺点。

1. 性能:

  • Django:Django是一个全功能的框架,它提供了许多内置的功能和扩展。虽然它在性能方面相对较低,但它非常适合构建大型应用程序。
  • Flask:Flask是一个轻量级的框架,它更加注重简洁和灵活性。相比于Django,Flask具有更好的性能表现,但它的功能相对较少。
  • FastAPI:FastAPI是一个高性能的框架,它基于异步请求处理和类型注解。这使得FastAPI比Django和Flask在性能上更为出色,并且它使用Python的asyncio库来实现高效的并发请求处理。

2. 开发难度:

  • Django:Django是一个全功能的框架,它提供了许多现成的功能和组件,使得开发更加快速和简单。但是,对于初学者来说,Django的学习曲线可能相对较陡。
  • Flask:Flask是一个简洁而灵活的框架,它更多地侧重于自定义和配置。相对于Django,Flask的学习曲线较为平缓,适合小型和简单的项目。
  • FastAPI:FastAPI使用了类型注解和自动生成文档的功能,使代码更易读和维护。它提供了基于标准的API模式和强大的验证工具,减少了开发过程中的错误。

3. 推广程度:

  • Django:Django是最受欢迎和广泛使用的Python Web框架之一。它拥有庞大的社区支持和丰富的文档资源,可以轻松找到相关的教程、插件和解决方案。
  • Flask:Flask也是一个受欢迎的框架,拥有庞大的社区和丰富的扩展库。虽然它的用户群体相对较小,但在小型项目和快速原型开发中非常流行。
  • FastAPI:FastAPI是一个相对较新的框架,但它正在迅速获得开发者的关注。它的高性能和现代特性吸引了许多开发者,并且社区正在逐渐扩大。
    FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。

4. FastAPI关键特性:

  • 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web
    框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

三. 安装配置基本使用

1. 安装FastAPI和uvicorn

FastAPI使用uvicorn作为默认的Web服务。因此,您需要在安装FastAPI之前安装uvicorn。可以使用以下命令来安装FastAPI和uvicorn:

pip install fastapi
pip install uvicorn

其中, uvicorn 是一个轻量级的 ASGI(异步服务器网关接口)服务器。

2. 创建一个FastAPI应用程序

在Python文件中,导入FastAPI并创建一个应用程序实例:

from fastapi import FastAPI

app = FastAPI()

3. 定义路由

使用装饰器将函数绑定到特定的路径和HTTP方法,即路由:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

在上面的示例中,@app.get("/")表示将root()函数绑定到HTTP GET方法的根路径。函数返回一个字典,其中包含一个简单的 {"message": "Hello World"} 消息。

4. 运行FastAPI 应用程序

可以使用uvicorn运行FastAPI应用程序。在Python文件所在的目录下运行以下命令:

uvicorn main:app --reload

其中,main是Python文件名,app是FastAPI应用程序实例的名称。--reload选项表示在修改代码时重新加载应用程序。

5. 测试API

在浏览器中打开 http://localhost:8000/ ,您应该能够看到 “Hello World”消息。可以使用Postman或其他HTTP客户端测试API的其他端点。

6. 添加路由和响应处理程序

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

这个应用程序有两个路由:

根路由 /,响应一个包含 {"message": "Hello World"} 的 JSON。
/items/{item_id},响应一个包含 {"item_id": item_id, "q": q} 的 JSON。
其中, /items/{item_id} 包含一个路径参数 item_id 和一个查询参数 q。如果不提供查询参数,则默认为 None

7. 在路由处理程序中使用模板参数

除了路径参数和查询参数外,FastAPI 还支持在路由处理程序中使用模板参数。例如,以下示例显示了如何在路由处理程序中使用模板参数:

from fastapi import FastAPI

app = FastAPI()

@app.get("/users/{user_id}")
async def read_user(user_id: int):
    return {"user_id": user_id}

在这个例子中,路由 /users/{user_id} 包含一个路径参数 user_id。当我们访问 /users/123 时,user_id 的值将被设置为 123。

8. 在路由处理程序中返回模板

FastAPI 也支持在路由处理程序中返回HTML模板。以下示例显示了如何在路由处理程序中返回HTML模板:

from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates

app = FastAPI()
templates = Jinja2Templates(directory="templates")

@app.get("/")
async def read_root(request: Request):
    return templates.TemplateResponse("index.html", {"request": request, "username": "Johnson Doe"})

在这个例子中,我们使用了 Jinja2 Templates 模块,将模板目录设置为当前工作目录下的 templates 文件夹。

路由处理程序 read_root() 返回了一个用指定模板 index.html 渲染的页面,将 requestusername 传递给模板。在模板中,将 username 变量显示在页面上。

9. 在请求体中接收 JSON 数据

FastAPI 支持从请求体中解析 JSON 数据。以下样例演示了如何解析 JSON 数据:

from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    return item

10. 在请求体中上传文件

FastAPI 同样支持在请求体中上传文件。以下样例演示了如何上传文件:

from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    return {"filename": file.filename}

在这个示例中,路由处理程序 create_upload_file() 接收一个类型为 UploadFile 的参数 file,将上传的文件保存在服务端。如果请求中没有提供文件,则返回一个错误信息。

四. FastAPI项目目录结构

1.示例

my_project/
├── app/                                
│   ├── apis/
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   ├── items.py
│   │   └── users.py
│   ├── core/
│   │   ├── __init__.py
│   │   ├── config.py
│   │   ├── security.py
│   │   └── sqlalchemy.py
│   ├── db/
│   │   ├── __init__.py
│   │   └── base.py
│   ├── main.py
│   └── models/
│       ├── __init__.py
│       ├── item.py
│       └── user.py
├── docker-compose.yml
├── Dockerfile
├── README.md
└── requirements.txt

在这个示例项目中,主要包括以下几个部分:

  • app/:用于存放应用程序的主要代码。包含API定义、业务逻辑、数据库连接等。
  • app/apis/:API路由和业务逻辑实现的目录。
  • app/core/:配置、鉴权、数据库连接等核心功能的实现。
  • app/db/:数据库模型的定义,以及数据库相关的代码。
  • app/models/:ORM模型定义,实现业务逻辑和数据库操作的映射。
  • app/main.py:FastAPI应用程序的启动文件,包括应用程序的初始化、路由注册等。
  • docker-compose.yml:Docker Compose配置文件。
  • Dockerfile:应用程序Docker镜像的构建文件。
  • README.md:项目文档。
  • requirements.txt:项目依赖清单。

此外,还可以根据项目需要添加其他目录和文件,例如静态文件目录、测试目录、文档目录等。但是,无论怎样组织FastAPI项目结构,都需要保证代码清晰明了、易于维护。

五. 总结

这只是FastAPI的基本用法。FastAPI还提供了许多其他功能,如请求体验证和文档生成,以帮助您轻松构建高性能API。有了这些基础,您可以开始在FastAPI中编写更强大和复杂的API了!
FastAPI 框架中文文档:https://fastapi.tiangolo.com/zh/

以上就是FastAPI框架的基本使用和介绍,希望对你有所帮助!文章来源地址https://www.toymoban.com/news/detail-675801.html

到了这里,关于Python - 【FastAPI】框架配置搭建基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python FastAPI 框架 操作Mysql数据库 增删改查

    2 比 1 更容易理解,可以先看2(单文件级别) FastAPI 可以使用任何您想要的关系型数据库。 在这里,让我们看一个使用着SQLAlchemy的示例。 您可以很容易地将SQLAlchemy支持任何数据库,像: PostgreSQL MySQL SQLite Oracle Microsoft SQL Server,等等其它数据库 在此示例中,我们将使用SQL

    2024年01月16日
    浏览(28)
  • 试玩python的web框架 flask、fastapi、tornado、django

    先解决一下IDEA使用远程解释器,本地代码编辑无法代码提示问题 常用的4个Python Web框架对比 注意 1.这里使用linux 192.168.72.126上远程解释器,需要 /usr/bin/pip3 install flask ,host参数不要使用localhost/127.0.0.1,即只监听本地的访问,会导致windows无法访问到flask app 2.运行方式增加main方法

    2024年02月17日
    浏览(43)
  • 【Fastapi框架】Fastapi的使用和进阶

    原文作者 :我辈李想 版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。 新建main.py文件, 方式一:命令启动 方式二:在mian.py中加启动代码 http://127.0.0.1:8000/ http://127.0.0.1:8000/items/1 http://127.0.0.1:8000/items/1?q=2 http://127.0.0.1:5678/docs#/ http://127.0.0.1:5678/redoc

    2024年02月04日
    浏览(31)
  • FastAPI 基本使用(一)

      目录 ​编辑 1、基本介绍  2、运行方式 3、创建接口步骤 4、自动生成API文档 4.1 交互式API文档 4.2 备用API文档 5、FastApi 执行顺序 6、Python-Pydantic库 6.1 BaseModel模型 6.2 请求体 + 路径参数 + 查询参数 7、Query/Path/Body/Field 参数(额外的校验) 与 字符串验证 8、typing类型注解 8.1 常

    2024年02月08日
    浏览(25)
  • webconsole使用方法(fastapi框架)

    需要在自己的项目中,可以实时连接linux或者docker的命令行,以此来达到webconsole或者叫web terminal的这种虚拟控制台效果。以下是本项目的具体实现: 框架:fastapi python版本: 3.7.5 所以如果是fastapi框架的话,基本可以做到开箱即用,只需添加几行配置代码即可使用,至于其他

    2024年02月05日
    浏览(24)
  • python fastapi 入门教程,每个案例都使用postman进行测试写的接口

    官方示例代码 运行命令:uvicorn test:app --reload 注意:运行命令app前面那个是文件位置,官方的文件名叫main,要以实际的文件名为准,不然找不到app 测试无r参数情况 测试有r参数情况 2.1、错误写法 报错了 2.2、正确写法 2.3、嵌套多个请求参数(不明白的话看下面的postman的请求

    2023年04月08日
    浏览(29)
  • 【Python】如何在FastAPI中使用UUID标记日志,以跟踪一个请求的完整生命周期

    在分布式系统中,一个请求可能会经过多个服务,每个服务都会生成自己的日志。如果我们只使用普通的日志记录,那么很难将这些日志串联在一起,以至难以跟踪一个请求的完整生命周期。 如果能够使用uuid标记日志,为每个请求生成一个唯一的uuid,且这个日志可以在不同

    2024年02月07日
    浏览(35)
  • python系列28:fastapi部署应用

    FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,类似flask,Django,webpy 在部署时可能需要用到下面的库: Uvicorn 或者 Hypercorn负责ASGI 服务器。 Starlette 负责 web 部分。 Pydantic 负责数据部分。 都用pip install安装即可 示例代码如下: 如果你的代码里会出现 async /

    2024年01月18日
    浏览(25)
  • python高并发优选之FastAPI

    FastAPI是一个基于Python 3.6+的现代Web框架,它专注于高性能和易用性。FastAPI通过结合多种技术实现了出色的性能,包括异步编程、类型提示和自动文档生成。FastAPI基于Starlette框架,并且使用Pydantic库进行数据验证和转换,从而使RESTful API的开发变得更加容易。 在FastAPI中,GET和

    2024年02月11日
    浏览(32)
  • Python - FastAPI 实现 get、post 请求

    目录 一.引言 二.FastAPI Server 构建 1.get - read_items 2.post - create_item 3.uvicorn - run_app 三.Postman 请求 1.post - create_item 2.get - read_items 四.Requests 请求 1.post - create_item 2.get - read_items 五.总结 前面介绍了 LLM 的相关知识,从样本加载、模型加载到后面的模型训练与模型推理,我们经历的完

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包