使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发

使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发

本文提供了一份完整的 FastAPI 入门指南,涵盖从环境搭建、依赖安装到创建并运行一个简单的 FastAPI 应用的各个步骤。通过 FastAPI 和 Uvicorn,开发者可以快速构建现代化的 Web API。文章还介绍了如何使用 PyCharm 创建 Python 项目、如何编写 API 路由和数据模型,并通过 Swagger UI 和 ReDoc 自动生成交互式 API 文档进行测试。本文适合初学者了解 FastAPI 的基础知识,并快速上手开发高效的 Web API。

文章目录

  • 使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发
      • 一 FastAPI 依赖简述
      • 二 使用 PyCharm 创建 python 应用
        • 1 使用 Pure Python
        • 2 使用 FastAPI 插件
      • 三 FastAPI 安装
        • 1 安装 FastAPI
        • 2 安装 ASGI 服务器
      • 四 FastAPI 示例
      • 五 启动应用
      • 六 检查运行状态
      • 七 交互式 API 文档
        • 1 Swagger UI
        • 2 ReDoc 文档
      • 八 源码地址

一 FastAPI 依赖简述

FastAPI 核心技术栈说明
Python建议版本 python 3.6+
Starlette用于处理 Web 部分
Pydantic用于处理数据验证和解析

二 使用 PyCharm 创建 python 应用

File -> New Project... ,本文使用 Pure Python 创建应用。

1 使用 Pure Python

在这里插入图片描述

2 使用 FastAPI 插件

在这里插入图片描述

三 FastAPI 安装

1 安装 FastAPI

要安装 FastAPI,可以运行以下命令。

# 本文安装的是 fastapi[standard]
pip install "fastapi[standard]"
pip install "fastapi[all]"
pip install fastapi
2 安装 ASGI 服务器

ASGI 服务器是用来运行应用程序的,推荐在生产环境中使用 Uvicorn。

pip install "uvicorn[standard]"

安装 FastAPI 一般会带上 uvicorn,当然你也可以用其他 ASGI 服务器。

四 FastAPI 示例

下面是一个简单的 FastAPI 示例,将这段代码拷贝到 main.py 中 。

from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: Union[bool, None] = None

@app.get("/")
def read_root():
    return {"Hello": "World"}

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

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

五 启动应用

要运行应用程序,使用以下命令启动服务器:

uvicorn main:app --reload

命令说明:

  • main:指向 main.py 文件(即 Python 模块)。
  • app:在 main.py 文件中通过 app = FastAPI() 创建的应用实例。
  • --reload:开启代码热重载,使得修改代码后服务器自动重启(适用于开发环境)。

运行日志

INFO:     Will watch for changes in these directories:[xxx]
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [26400] using WatchFiles
INFO:     Started server process [26404]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

六 检查运行状态

访问 http://127.0.0.1:8000/items/5?q=somequery 来验证应用的工作情况,返回 JSON。

{
	"item_id": 5,
	"q": "somequery"
}

七 交互式 API 文档

1 Swagger UI

访问 http://127.0.0.1:8000/docs,看到自动生成的交互式 API 文档( Swagger UI )。

在这里插入图片描述

2 ReDoc 文档

访问 http://127.0.0.1:8000/redoc,查看另一种自动生成的文档界面( ReDoc )。

在这里插入图片描述

八 源码地址

详情见:GitHub FastApiProj

引用: FastAPI 文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

练习LabVIEW第三十五题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十五题: 使用labview模拟一个3-8译码器 开始编写: 用LabVIEW做3-8译码器首先要知道它是个啥…

【流量控制】之创建和管理前缀列表

前缀列表是包含一个或多个CIDR地址块的集合。您可以自主创建前缀列表并对其进行管理。在创建过程中,您可以将现有的前缀列表克隆(复制)到指定地域(同地域或跨地域),让操作更加便捷。本文介绍如何使用专有网…

数据库作业5

1,建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 测试: 2.建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量 测试 3.建立触发器,实现功能:…

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景

Spring Boot 注解大全:全面解析 Spring Boot 常用注解及其应用场景 简介 Spring Boot 是一个基于 Spring 框架的简化开发框架,它旨在简化 Spring 应用的初始搭建和开发过程。Spring Boot 提供了一系列的注解,使得开发者可以更加方便地进行应用开发和配置。本文将详细介绍 S…

11.3比赛总结

Bricks 1.题意:有一个由 B 和 W 组成的字符串,要将它划分成尽量多的区间,并使得每个区间中 B 和 W 的比例相等。 2.一道贪心题。首先特殊处理比值恒为 0 和不存在比值的情况,也就是全是 W 或者 B,明显这两种情况下每…

excel自定义导出实现(使用反射)

前言 项目中接到需求,需要对导出的字段进行自定义导出 ,用户可在前端选择自定义导出的字段(如图),实现过程做以下记录,仅供参考; 思路 跟前端约定好所有要导出的字段名称(headName)跟对应的…

“游戏人”也能拿诺贝尔奖!

“游戏人”也能拿诺贝尔奖! 点击蓝链领取游戏开发教程 2024年度的诺贝尔奖,堪称AI深刻影响传统科学领域的一次生动展现。在这一年里,备受瞩目的诺贝尔物理学奖与诺贝尔化学奖两大核心奖项,均颁给了在AI领域做出杰出贡献的研究者…

OmniGen: Unified Image Generation(代码的复现)

文章目录 论文简介模型的部署需要下载的预训练权重 模型的生成效果图像编辑的效果风格迁移的效果 总结 论文简介 OmniGen的github项目地址 OmniGen: Unified Image Generation。OmniGen 在各种图像生成任务中都表现出了卓越的性能,并可能大大超过现有扩散模型的极…

docker-compose安装rabbitmq 并开启延迟队列和管理面板插件(rabbitmq_delayed_message_exchange)

问题: 解决rabbitmq-plugins enable rabbitmq_delayed_message_exchange :plugins_not_found 我是在docker-compose环境部署的 services:rabbitmq:image: rabbitmq:4.0-managementrestart: alwayscontainer_name: rabbitmqports:- 5672:5672- 15672:156…

Pandas 数据可视化指南:从散点图到面积图的全面展示

Pandas 数据可视化指南:从散点图到面积图的全面展示 本文介绍了使用 Pandas 进行数据可视化的多种方法,包括散点图、折线图、条形图、直方图、饼图和面积图等,涵盖了常见的图表类型及其实现方式。通过提供详细的代码示例,展示了如…

电力电子论文(TPE、TTE)投稿经验分享

本节博客不进行技术分享,仅分享我的投稿经验,主要介绍投稿时间戳、投稿注意事项。 TPE: 首先介绍的是电力电子老牌顶刊——IEEE Transactions on Power Electronics,缩写PE、TPE、TPEL。截止写稿时间,该期刊Impact Fa…

YOLOv11模型架构以及使用命令介绍

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 👍感谢小伙伴们点赞、关注! 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

【高等数学】1函数极限连续

1. 函数 复合函数的性质及其图形 反函数的性质及其图形 分段函数的性质及其图形 隐函数的性质及其图形 基本初等函数(通常包括幂函数、指数函数、对数函数、三角函数、反三角函数)的性质及其图形 初等函数(由基本初等函数经过有限次的四则运算和复合运算所得到的函数)…

评估 机器学习 回归模型 的性能和准确度

回归 是一种常用的预测模型,用于预测一个连续因变量和一个或多个自变量之间的关系。 那么,最后评估 回归模型 的性能和准确度非常重要,可以帮助我们判断模型是否有效并进行改进。 接下来,和大家分享如何评估 回归模型 的性能和准…

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (6) - 触屏事件

AWTK 作为一个GUI引擎,自然少不了对触屏事件的支持。这里我们先支持单点触摸,后续再支持多点手势。 1. 注册 XComponent 的触屏事件回调 这个在 AppNapi 的构造函数中完成: AppNapi::AppNapi(std::string &id) {id_ id;component_ n…

2024年大厂AI大模型面试题精选与答案解析

前言 随着AI市场,人工智能的爆火,在接下来的金九银十招聘高峰期,各大科技巨头和国有企业将会对AGI人才的争夺展开一场大战,为求职市场注入了新的活力。 为了助力求职者在面试中展现最佳状态,深入理解行业巨头的选拔标…

GNN 训练点击-购买 预测模型

搜集到click-buy数据集, 数据集分享在网盘 通过百度网盘分享的文件:数据集_20241031_220915 链接:https://pan.baidu.com/s/1qcXAO_P1h3Vrrui5qFbYLw?pwd6f3m 其中 yoochoose-buys.dat 特征含义buy_df.columns [session_id, timestamp, …

SpringMvc day1102

ok了家人们今天我们学习SpringMvc,之后学习SpringBoot,let‘s go 六.拦截器 6.1 拦截器概述 Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter ,用于对处理器 ( 自己编写的 Controller) 进行预处理和后 处理。用户可以自…

项目管理(风险:范围、成本、时间、质量)

项目管理主要是围绕着范围、成本、时间、质量,每个部分都存在不同的风险。 存在潜在的风险方面,也有可能是法律风险、合作方带来的风险等。 减少风险: 提前与技术沟通方案。产品内部先讨论。每日例会:同步信息,减少…

6.0、静态路由

路由器最主要的功能就是转发数据包。路由器转发数据包时需要查找路由表(你可以理解为地图),管理员可以直接手动配置路由表,这就是静态路由。 1.什么是路由? 在网络世界中,路由是指数据包在网络中的传输路…