iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python - 【FastAPI】框架配置搭建基本使用
  • 344
分享到

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

pythonfastapi数据库 2023-09-11 08:09:02 344人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

一. 前言 之前在面试的时候面试官有提到过这个框架,但是个人在之前的项目中没有用到过,只是有听过,并没有实际的应用,因此,个人自己研究了一下,这是个新型的框架,使用起来相对挺简单。Fastapi是一个

一. 前言

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

二. Djangoflask,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 fastapipip install uvicorn

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

2. 创建一个FastAPI应用程序

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

from fastapi import FastAPIapp = FastAPI()

3. 定义路由

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

from fastapi import FastAPIapp = 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 FastAPIapp = 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 FastAPIapp = 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, Requestfrom fastapi.templating import Jinja2Templatesapp = 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 FastAPIfrom pydantic import BaseModelclass Item(BaseModel):    name: str    price: float    is_offer: bool = Noneapp = FastAPI()@app.post("/items/")async def create_item(item: Item):    return item

10. 在请求体中上传文件

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

from fastapi import FastAPI, File, UploadFileapp = 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://blog.csdn.net/qq_43030934/article/details/131452940

--结束END--

本文标题: Python - 【FastAPI】框架配置搭建基本使用

本文链接: https://www.lsjlt.com/news/402835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python - 【FastAPI】框架配置搭建基本使用
    一. 前言 之前在面试的时候面试官有提到过这个框架,但是个人在之前的项目中没有用到过,只是有听过,并没有实际的应用,因此,个人自己研究了一下,这是个新型的框架,使用起来相对挺简单。FastAPI是一个...
    99+
    2023-09-11
    python fastapi 数据库
  • IDEA2023 Maven3.9.1+Tomcat10.1.8配置并搭建Servlet5.0的基本框架
    文章目录 一、Maven3.9.1下载并配置 二、Tomcat10.1.8下载并配置 三、搭建Servlet 一、Maven3.9.1下载并配置 (1)Maven下载 Maven官网:https://maven.apache.org/d...
    99+
    2023-10-06
    maven java junit servlet
  • 基于fastapi框架的异步怎么使用
    本篇内容主要讲解“基于fastapi框架的异步怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于fastapi框架的异步怎么使用”吧!使用fastapi框架开发web项目1、为什么要用f...
    99+
    2023-07-05
  • SpringCloud Alibaba 基本开发框架搭建过程
    目录1、创建多Module工程1.1、创建父工程1.2、创建子module 选中父项目,右键,新建module2、使用Gti进行版本控制2.1、初始化本地仓库 打开项目路径,右键gi...
    99+
    2024-04-02
  • IDEA(2022.2)搭建Servlet基本框架详细步骤
    文章目录 1 创建基本Web项目1.1 创建新项目1.2 生成Module1.3 设置Web框架1.4 新建导航页 2 配置Tomcat服务器2.1 设置Tomcat2.2 部署Tomca...
    99+
    2023-09-12
    servlet intellij-idea java
  • 利用IDEA配置Maven如何搭建一个ssm框架
    本篇文章给大家分享的是有关利用IDEA配置Maven如何搭建一个ssm框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、配置Maven环境下载Maven下载完成解压压缩包并...
    99+
    2023-05-31
    idea maven ssm
  • Mybatis-plus框架使用配置
    Mybatis-plus框架使用配置 MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改变。使得我们可以可以在 My...
    99+
    2023-09-08
    java spring boot mybatis
  • hibernate框架怎么搭建和使用
    搭建和使用Hibernate框架可以按照以下步骤进行: 添加Hibernate依赖:在项目的构建文件中(如Maven的pom.x...
    99+
    2023-10-23
    hibernate
  • Python搭建插件式框架(基于组件开发
    Python搭建插件式框架(基于组件开发) 概念 基于组件的开发(Component-Based Development,简称CBD)是一种软件开发范型。它是现今软件复用理论实用化的研究热点,在组件对象模型的支持下,通过复用已有...
    99+
    2023-01-31
    组件 插件 框架
  • 使用Pyramid框架构建Python
    关于Pyramid框架在本博另一篇文章“使用Buildout进行开发”中,有讲到使用Buildout来将Pyramid框架集成到Python环境中,并构建一个“helloworld”级别的Python Web应用。Web框架旨在提供一个快速...
    99+
    2023-01-31
    框架 Pyramid Python
  • 如何使用Python3+mysql8.0搭建Django框架
    小编给大家分享一下如何使用Python3+mysql8.0搭建Django框架,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、安装python基础环境:cent...
    99+
    2023-06-15
  • Python - 定时任务框架【APScheduler】基本使用详解(一)
    一. 前言 一个网页会有很多数据是不需要经常变动的,比如说首页,变动频率低而访问量大,我们可以把它静态化,这样就不需要每次有请求都要查询数据库再返回,可以减少服务器压力 我们可以使用Django的模板...
    99+
    2023-09-06
    python 开发语言
  • 持久层ORM框架Hibernate框架的使用及搭建方式
    目录前言一、Hibernate的优点?二、Hibernate的缺点三、搭建Hibernate项目架构四、Hibernate核心接口的介绍五、封装Hibernate的工具类六、常用的C...
    99+
    2024-04-02
  • Java 自定义Spring框架以及Spring框架的基本使用
    从现在开始,大家可以跟随着我的脚步来自定义一个属于自己的Spring框架。但是,在学习自定义Spring框架之前,我们得先来回顾一下Spring框架的基本使用。知晓了Spring框架...
    99+
    2024-04-02
  • 如何使用seajs库和Bootstrap框架搭建通用前端框架
    这篇文章主要介绍如何使用seajs库和Bootstrap框架搭建通用前端框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前端框架主要研究了四点1、 研究Web框架的动态加载技术针对...
    99+
    2024-04-02
  • Flutter应用框架搭建之屏幕适配详解
    目录原理flutter_screenutil添加依赖初始化使用效果其他 Api因移动设备的多样性,特别是 Android 的碎片化严重,存在各种各样的分辨率,而 Flutter 跨平...
    99+
    2024-04-02
  • 如何使用Maven搭建SpringMVC+Spring+MyBatis框架
    这篇文章主要介绍如何使用Maven搭建SpringMVC+Spring+MyBatis框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级...
    99+
    2023-05-30
    springmvc spring mybatis
  • Flutter应用框架搭建屏幕适配的方法
    本篇内容主要讲解“Flutter应用框架搭建屏幕适配的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter应用框架搭建屏幕适配的方法”吧!因移动设备的多样性,特别是 Android ...
    99+
    2023-06-29
  • SpringBootKnife4j在线API文档框架基本使用
    目录1.Knife4j在线API文档基本使用2.配置API文档信息1.Knife4j在线API文档基本使用 Knife4j是一款基于Swagger 2的在线API文档框架。 使用Kn...
    99+
    2022-12-08
    SpringBoot Knife4j在线API文档 SpringBoot Knife4j
  • pbootcms基本使用方法,搭建教程
    上传到自己的主机,输入域名打开,会出现授权的页面,直接到pbootcms的官网进行授权(免费)。 点击pbootcms官网进入网站     2、登录后台,登录方式:你的域名/admin.php 账号:admin 密码:admin 3、...
    99+
    2023-09-09
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作