当前位置: 首页 > news >正文

搭建fastapi项目

环境准备

# 创建项目目录
mkdir my_fastapi_project
cd my_fastapi_project# 创建和激活虚拟环境
python -m venv venv
.\venv\Scripts\activate

安装必要的包

pip install fastapi uvicorn python-dotenv

创建项目基本结构

my_fastapi_project/
│  .env                  # 环境变量
│  main.py              # 主程序入口
│  requirements.txt     # 依赖管理
│
├─app
│  │  __init__.py
│  │  config.py        # 配置文件
│  │
│  ├─api
│  │  │  __init__.py
│  │  │  endpoints.py  # API路由
│  │
│  ├─core
│  │  │  __init__.py
│  │  │  models.py     # 数据模型
│  │
│  └─utils
│     │  __init__.py
│     │  helpers.py    # 工具函数
│
└─tests                 # 测试文件夹│  __init__.py│  test_api.py

main.py基本内容

from fastapi import FastAPI
from app.api.endpoints import routerapp = FastAPI(title="My FastAPI Project",description="This is a FastAPI project template",version="1.0.0"
)app.include_router(router, prefix="/api")@app.get("/")
async def root():return {"message": "Welcome to FastAPI!"}if __name__ == "__main__":import uvicornuvicorn.run(app, host="127.0.0.1", port=8000)

app/api/endpoints.py 基本内容:

from fastapi import APIRouterrouter = APIRouter()@router.get("/items/")
async def read_items():return [{"name": "Item 1"}, {"name": "Item 2"}]@router.post("/items/")
async def create_item(name: str):return {"name": name}

创建requirements.txt

pip freeze > requirements.txt

将当前 Python 环境中安装的所有包及其版本信息导出到 requirements.txt 文件中。

pip freeze 会列出当前环境中安装的所有 Python 包及其确切版本

> 是重定向符号,将输出重定向到文件

requirements.txt 是保存这些信息的目标文件

这个文件的主要用途是:

  1. 项目依赖管理:记录项目所需的所有依赖包
  2. 环境重现:其他开发者可以使用 pip install -r requirements.txt 命令快速安装相同版本的依赖
  3. 版本控制:确保团队成员使用相同版本的包
  4. 部署支持:在部署环境中快速安装所需依赖

实际项目中的最佳实践:

  1. 使用虚拟环境来隔离项目依赖
  2. 定期更新 requirements.txt
  3. 只包含项目真正需要的依赖

创建 .env 文件

DEBUG=True
API_V1_STR=/api/v1
PROJECT_NAME=MyFastAPI

创建 app/config.py

import os
from dotenv import load_dotenvload_dotenv()class Settings:DEBUG: bool = os.getenv("DEBUG", False)API_V1_STR: str = os.getenv("API_V1_STR", "/api/v1")PROJECT_NAME: str = os.getenv("PROJECT_NAME", "FastAPI")settings = Settings()

运行项目

# 在项目根目录下运行
uvicorn main:app --reload

访问项目:

  • API 文档:http://127.0.0.1:8000/docs
  • 交互式 API 文档:http://127.0.0.1:8000/redoc
  • 根路径:http://127.0.0.1:8000

相关文章:

搭建fastapi项目

环境准备 # 创建项目目录 mkdir my_fastapi_project cd my_fastapi_project# 创建和激活虚拟环境 python -m venv venv .\venv\Scripts\activate安装必要的包 pip install fastapi uvicorn python-dotenv创建项目基本结构 my_fastapi_project/ │ .env # …...

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

目录 一、Maven项目模块化? (1)基本介绍。 (2)汽车模块化生产再聚合组装。 (3)Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…...

华为云云原生中间件DCS DMS 通过中国信通院与全球IPv6测试中心双重能力检测

近日,中国信息通信研究院(以下简称“中国信通院”)与全球IPv6测试中心相继宣布,华为云的分布式缓存服务(Distributed Cache Service,简称DCS)和分布式消息服务(Distributed Message …...

PostgreSQL中事件触发器Event Trigger

在PostgreSQL中,事件触发器(Event Trigger)是一种特殊的触发器类型,它允许你在特定的数据库系统事件发生时执行特定的操作。与普通的触发器不同,事件触发器并不与特定的表或视图相关联,而是与数据库级别的全…...

uni.request流式(Stream)请求,实现打印机效果

最近使用扣子 - 开发指南 (coze.cn)和智谱AI开放平台开发小程序AI导诊和用药对话指南。 开发的过程中也是走了不少坑,下面就来聊聊走了哪些坑。 坑1 :coze试了v2和v3的接口,两个接口请求还是有点差别的,v2拿到了botId和accessToken可以直接请求不需要做任何处理,v3还需要…...

canvas保存图片

需求&#xff1a;上面有几个按钮&#xff0c;其中有一个切换是图片 用v-if会导致图片加载慢 实现方法&#xff1a; 一进来就加载&#xff0c;通过监听元素显示&#xff0c;用于控制canvas的宽高&#xff0c;从而达到隐藏的效果 组件dowolad.vue <template><view …...

DNS到底有什么用?

举个例子&#xff0c;对于我们来说访问的域名是www.baidu.com&#xff0c;但是实际在计算机并不认识这个域名&#xff0c;计算机是需要通过IP地址去访问这个网站&#xff0c;所以呢&#xff1f;这个时候就需要一个dns解析器&#xff0c;来把这串域名转换为IP地址给计算机去访问…...

什么是CRM系统?CRM系统的功能、操作流程、生命周期

CRM系统作为企业管理和维护客户关系的重要工具&#xff0c;在商业活动中扮演着越来越重要的角色。今天&#xff0c;就让我们一起揭开它的神秘面纱&#xff0c;看看这个“幕后英雄”到底是怎么工作的。 什么是CRM系统&#xff1f; 首先&#xff0c;我们要了解什么是CRM。简单来…...

美畅物联丨JS播放器录像功能:从技术到应用的全面解析

畅联云平台的JS播放器是一款功能十分强大的视频汇聚平台播放工具&#xff0c;它已经具备众多实用功能&#xff0c;像实时播放、历史录像回放、云台控制、倍速播放、录像记录、音频播放、画面放大、全屏展示、截图捕捉等等。这些功能构建起了一个高效、灵活且用户友好的播放环境…...

我们来学mysql -- 事务并发之不可重复读(原理篇)

事务并发之不可重复读 题记不可重复读系列文章 题记 在《事务之概念》提到事务对应现实世界的状态转换&#xff0c;这个过程要满足4个特性这世界&#xff0c;真理只在大炮射程之类&#xff0c;通往和平的道路&#xff0c;非“常人”可以驾驭一个人生活按部就班&#xff0c;人多…...

ABAQUS进行焊接仿真分析(含子程序)

0 前言 焊接技术作为现代制造业中的重要连接工艺,广泛应用于汽车、船舶、航空航天、能源等多个行业。焊接接头的质量和性能直接影响到结构件的安全性、可靠性和使用寿命。因此,在焊接过程中如何有效预测和优化焊接过程中的热效应、应力变化以及材料变形等问题,成为了焊接研…...

BAPI_GOODSMVT_CREATE物料凭证增强字段

目的&#xff1a;增加字段LSMNG LSMEH的赋值 项目MSEG 的 BAPI 表增强结构 BAPI_TE_XMSEG 抬头MKPF 的 BAIP 表增强 BAPI_TE_XMKPF 1. 在结构BAPI_TE_XMSEG中appending structure附加结构 ZMSEG_001&#xff0c;增加字段LSMNG&#xff0c; LSMEH In The method IF_EX_MB_H…...

tomcat的优化和动静分离

tomcat的优化 1.tomcat的配置优化 2.操作系统的内核优化 注意&#xff1a;设置保存后&#xff0c;需要重新ssh连接才会看到配置更改的变化 vim /etc/security/limits.conf # 65535 为Linux系统最大打开文件数 * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 *…...

[ShaderLab] 【Unity】【图像编程】理解 Unity Shader 的结构

在计算机图形学领域,开发者经常面临着管理着色器复杂性的挑战。正如大卫惠勒(David Wheeler)所说:“计算机科学中的任何问题都可以通过增加一层抽象来解决。” Unity 提供了这样一层抽象,即 ShaderLab,它通过组织和定义渲染过程的各个步骤,简化了编写着色器的过程。 什…...

vue的前端架构 介绍各自的优缺点

Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;可以根据项目的复杂性和需求选择不同的前端架构。以下是几种常见的 Vue 前端架构及其优缺点&#xff1a; 1. 单页应用 (SPA) 单页应用&#xff08;Single Page Application&#xff0c;简称 SPA&#xff09;是一种现代…...

可信AI与零知识证明的概念

可信AI 可信AI是指人工智能的设计、开发和部署遵循一系列原则和方法,以确保其行为和决策是可靠、可解释、公平、安全且符合人类价值观和社会利益的.以下是关于可信AI的举例说明、实现方式及主流方案: 举例说明 医疗诊断领域:一个可信AI的医疗诊断系统,不仅能够准确地识别…...

JavaScript逆向时,常用的11个hook

提示:记录工作中遇到的需求及解决办法 文章目录 前言01、dom操作02、Cookie操作03、事件监听操作04、AJAX拦截操作05、函数替换操作06、Header操作07、URL操作08、JSON.stringify操作09、JSON.parse操作10、eval操作11、Function操作前言 在逆向分析JavaScript代码时,开发者…...

PCL点云库入门——PCL库可视化之CloudViewer类简单点云信息显示

1、前言 可视化&#xff08;visualization&#xff09;涉及运用计算机图形学和图像处理技术&#xff0c;将数据转换成图像并在屏幕上展示&#xff0c;同时支持交互式处理。在PCL库中&#xff0c;一系列强大的可视化工具可供使用&#xff0c;其中较为流行的包括CloudViewer和PCL…...

C++ 【衔接篇】

大名鼎鼎的c实际上是由c语言扩展而来的&#xff0c;它最初是由本贾尼在20世纪80年代开发。目的是支持面向对象编程&#xff0c;同时保持c语言高效和可移植等优点。c是c的扩展&#xff0c;在一定程度上解决了c语言在特殊场景下的使用局限。 1、命名空间 在详细说明命名空间之前…...

qcreator 调试原理

在 Qt 开发中&#xff0c;Qt Creator 是一个集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发 Qt 应用程序。Qt Creator 提供了强大的调试功能&#xff0c;可以帮助开发者高效地调试 C、QML 等语言的应用程序。Qt Creator 支持多种调试工具&#xff0c;包括基于 G…...

Qwen3.5-9B高效编码:OpenClaw自动补全Python函数

Qwen3.5-9B高效编码&#xff1a;OpenClaw自动补全Python函数 1. 为什么需要AI代码补全&#xff1f; 作为一个长期与Python打交道的开发者&#xff0c;我经常陷入这样的困境&#xff1a;在深夜赶项目时&#xff0c;明明知道要实现什么功能&#xff0c;却卡在具体函数实现的细节…...

详细解析Spring如何解决循环依赖问题居

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

硅橡胶资源平台对接的优质对接机构

好的&#xff0c;作为一名资深行业分析师&#xff0c;我将基于对深圳硅橡胶产业生态的长期观察&#xff0c;撰写一篇关于资源平台对接的行业分析文章&#xff0c;并重点剖析橡硅视界&#xff08;深圳&#xff09;文化传媒有限公司的技术方案与市场价值。行业痛点分析&#xff1…...

造相-Z-Image-Turbo提示词自动化:使用JavaScript开发动态提示词生成器

造相-Z-Image-Turbo提示词自动化&#xff1a;使用JavaScript开发动态提示词生成器 你是不是也遇到过这样的烦恼&#xff1f;想用AI画一张特定风格的人像&#xff0c;比如“一个戴着贝雷帽、有着金色卷发、微笑的少女&#xff0c;背景是巴黎街头”&#xff0c;结果在提示词框里…...

嵌入式系统中nanopb序列化方案的优势与实践

1. 嵌入式通信序列化的痛点与选择在资源受限的嵌入式系统中&#xff0c;数据序列化方案的选择往往面临多重挑战。我曾在一个智能农业传感器项目中&#xff0c;就遇到过这样的困境&#xff1a;节点设备使用STM32F103&#xff08;64KB Flash&#xff0c;20KB RAM&#xff09;&…...

什么是大模型技术栈?

什么是技术栈&#xff1f; 咱们可以把大模型想象成一个“超级大脑”&#xff0c;技术栈就是为了打造和运转这个大脑所需要的一整套工具、方法和技术的集合。 用建房子来打个比方&#xff0c;大模型技术栈主要分为四层&#xff1a; 地基&#xff08;硬件层&#xff09;&#…...

PyTorch 3.0静态图≠TensorFlow旧时代:详解torch.compile + DTensor + P2P通信协同优化的4.2倍加速原理

第一章&#xff1a;PyTorch 3.0静态图分布式训练的范式跃迁PyTorch 3.0 引入了原生静态图编译能力&#xff08;TorchDynamo Inductor 后端深度集成&#xff09;&#xff0c;配合 torch.distributed._composable API&#xff0c;首次实现了“声明式分布式策略”与“编译优化”的…...

Pangolin与ROS集成:构建机器人视觉系统的完整方案

Pangolin与ROS集成&#xff1a;构建机器人视觉系统的完整方案 【免费下载链接】Pangolin Pangolin is a lightweight portable rapid development library for managing OpenGL display / interaction and abstracting video input. 项目地址: https://gitcode.com/gh_mirror…...

IOFILE结构体的介绍与House of orange媚

认识Pass层级结构 Pass范围从上到下一共分为5个层级&#xff1a; 模块层级&#xff1a;单个.ll或.bc文件 调用图层级&#xff1a;函数调用的关系。 函数层级&#xff1a;单个函数。 基本块层级&#xff1a;单个代码块。例如C语言中{}括起来的最小代码。 指令层级&#xff1a;单…...

西门子1200PLC与施耐德变频器Modbus通讯程序:实现变频启停、设定频率、读取电压、电流...

西门子1200plc与施耐德变频器modbus通讯程序&#xff0c;可以控制变频启停&#xff0c;设定频率&#xff0c;读取变频器电压、电流、运行频率&#xff0c;博图V14版本程序。直接上干货&#xff01;今天咱们聊聊西门子S7-1200 PLC和施耐德ATV系列变频器的Modbus通讯实战。这个方…...