当前位置: 首页 > 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…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...