搭建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
是保存这些信息的目标文件
这个文件的主要用途是:
- 项目依赖管理:记录项目所需的所有依赖包
- 环境重现:其他开发者可以使用
pip install -r requirements.txt
命令快速安装相同版本的依赖- 版本控制:确保团队成员使用相同版本的包
- 部署支持:在部署环境中快速安装所需依赖
实际项目中的最佳实践:
- 使用虚拟环境来隔离项目依赖
- 定期更新 requirements.txt
- 只包含项目真正需要的依赖
创建 .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保存图片
需求:上面有几个按钮,其中有一个切换是图片 用v-if会导致图片加载慢 实现方法: 一进来就加载,通过监听元素显示,用于控制canvas的宽高,从而达到隐藏的效果 组件dowolad.vue <template><view …...
DNS到底有什么用?
举个例子,对于我们来说访问的域名是www.baidu.com,但是实际在计算机并不认识这个域名,计算机是需要通过IP地址去访问这个网站,所以呢?这个时候就需要一个dns解析器,来把这串域名转换为IP地址给计算机去访问…...

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

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

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

ABAQUS进行焊接仿真分析(含子程序)
0 前言 焊接技术作为现代制造业中的重要连接工艺,广泛应用于汽车、船舶、航空航天、能源等多个行业。焊接接头的质量和性能直接影响到结构件的安全性、可靠性和使用寿命。因此,在焊接过程中如何有效预测和优化焊接过程中的热效应、应力变化以及材料变形等问题,成为了焊接研…...
BAPI_GOODSMVT_CREATE物料凭证增强字段
目的:增加字段LSMNG LSMEH的赋值 项目MSEG 的 BAPI 表增强结构 BAPI_TE_XMSEG 抬头MKPF 的 BAIP 表增强 BAPI_TE_XMKPF 1. 在结构BAPI_TE_XMSEG中appending structure附加结构 ZMSEG_001,增加字段LSMNG, LSMEH In The method IF_EX_MB_H…...

tomcat的优化和动静分离
tomcat的优化 1.tomcat的配置优化 2.操作系统的内核优化 注意:设置保存后,需要重新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 是一个用于构建用户界面的渐进式框架,可以根据项目的复杂性和需求选择不同的前端架构。以下是几种常见的 Vue 前端架构及其优缺点: 1. 单页应用 (SPA) 单页应用(Single Page Application,简称 SPA)是一种现代…...
可信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、前言 可视化(visualization)涉及运用计算机图形学和图像处理技术,将数据转换成图像并在屏幕上展示,同时支持交互式处理。在PCL库中,一系列强大的可视化工具可供使用,其中较为流行的包括CloudViewer和PCL…...
C++ 【衔接篇】
大名鼎鼎的c实际上是由c语言扩展而来的,它最初是由本贾尼在20世纪80年代开发。目的是支持面向对象编程,同时保持c语言高效和可移植等优点。c是c的扩展,在一定程度上解决了c语言在特殊场景下的使用局限。 1、命名空间 在详细说明命名空间之前…...
qcreator 调试原理
在 Qt 开发中,Qt Creator 是一个集成开发环境(IDE),用于开发 Qt 应用程序。Qt Creator 提供了强大的调试功能,可以帮助开发者高效地调试 C、QML 等语言的应用程序。Qt Creator 支持多种调试工具,包括基于 G…...

Windows 系统中的组策略编辑器如何打开?
组策略是 Windows 操作系统中用于设置计算机和用户配置的重要工具。它允许管理员控制各种系统功能,从桌面背景到安全设置等。对于 Windows 专业版、企业版和教育版用户来说,可以通过组策略编辑器(Group Policy Editor)来管理这些设…...
scala的泛型类
泛型:类型参数化 泛型类指的是把泛型定义到类的声明上, 即:该类中的成员的参数类型是由泛型来决定的. 在创建对象时, 明确具体的数据类型. 定义格式: class 类名(成员名:数据类型) class 类名[泛型名](成员名:泛型名) 参考代…...
基于Couchbase的数据构建方案:数仓分层
初步方案是将公共层和报表层分别放在不同的bucket中,这种设计从存储和访问优化的角度是合理的,但仍有以下细节需要考虑: 1. 数仓公共层设计(origin bucket) 合理性分析: 将ODS、DWD、DWS层的数据放在一个b…...

信创改造-Spring Boot 项目部署至 TongWeb
打 war 包参考:https://blog.csdn.net/z1353095373/article/details/144330999...

supervision - 好用的计算机视觉 AI 工具库
Supervision库是一款出色的Python计算机视觉低代码工具,其设计初衷在于为用户提供一个便捷且高效的接口,用以处理数据集以及直观地展示检测结果。简化了对象检测、分类、标注、跟踪等计算机视觉的开发流程。开发者仅需加载数据集和模型,就能轻…...

程序的调试
一名优秀的程序员也是一名出色的侦探,每一次调试都是尝试破案的过程 目录 前言 一、什么是调试? 二、调试 1.调试是什么 2.基本步骤 三、调试注意事项 1.怎么写出易于调试的代码 assert(断言) const 2.常见错误 总结 前言 主要是怎么调试,调…...

使用html 和javascript 实现微信界面功能2
1.功能说明: 对上一篇的基础上进行了稍稍改造 主要修改点: 搜索功能: 在搜索框后面增加了搜索按钮。 搜索按钮调用performSearch函数来执行搜索操作。 表单形式的功能: 上传文件: 修改为表单形式,允许用户通过文件输入控件选择文件并上传。 …...
虚幻引擎Actor类生命周期
AActor构造函数 在AActor类的构造函数中,虚幻引擎会初始化与该Actor相关的一些关键属性,比如: 默认的组件(如RootComponent、MeshComponent等)。默认的属性设置,例如位置、旋转、缩放等。还会调用BeginPlay等生命周期函数,但在构造函数中,这些函数不会执行。当你在场景…...

记录2024-leetcode-字符串DP
10. 正则表达式匹配 - 力扣(LeetCode)...
爬虫获取的数据如何有效存储和管理?
爬虫获取的数据如何有效存储和管理,涉及到数据的采集、存储、清洗、分析和保护等多个方面。以下是一些关键步骤和最佳实践: 1. 数据采集与同步 API接口同步:通过API接口将数据从数据源传输到目标位置,并保持数据的一致性和完整性…...