FastAPI 的 quickstart

从这一章往后我们就正式开始学习 FastAPI 了

代码

FastAPI 环境安装

  1. python 环境安装
    根据要求至少需要 python 3.8及其以上,可以去 python 官网 自行下载安装,
    本文中我们用 python 3.11

  2. FastAPI 环境安装

pip install fastapi
pip install "uvicorn[standard]"

其中 pip install “uvicorn[standard]” 用于安装ASGI服务器 uvicorn库及其标准依赖项。

  1. Python IDE
    这里我们选择 PyCharm ,下载后安装即可。没有专业版秘钥的可以下载 社区版本:PyCharm Community Edition

FastAPI 例子

首先我们先直观的感受一下,FastAPI 的使用:在 quickstart python package 下面创建 demo.py:

from fastapi import FastAPI
app = FastAPI()

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

@app.get("/hello/{name}")
def say_hello(name: str):
    return {"message": f"Hello {name}"}  

其中 @app.get(xx) 为**路径操作装饰器,用来做映射用的
def xxx
路径操作函数,**具体的业务逻辑在这里实现
在 PyCharm 终端执行执行

uvicorn quickstart.demo:app --reload

uvicorn quickstart.demo:app 命令含义如下:

  • quickstart.demoquickstart.demo.py 文件(一个 Python「模块」)。
  • app:在 quickstart.demo.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
    然后就可以在浏览器中分别访问
  1. http://127.0.0.1:8000/ 返回
{"message":"Hello World"}
  1. http://127.0.0.1:8000/hello/xiaomin
{"message":"Hello xiaoming"}

至此 FastAPI 的例子就大功告成了,唯一不好的地方就是每次都需要通过命令行来操作,能否想普通的 python 程序一样,直接在 PyCharm 运行呢?
答案是可以的,直接添加 main 方法即可,如下:

from fastapi import FastAPI
app = FastAPI()

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

@app.get("/hello/{name}")
def say_hello(name: str):
    return {"message": f"Hello {name}"}  

if __name__ == "__main__":
    import uvicorn
    uvicorn.run("quickstart.demo:app",reload=True,port=8001)

此处我们通过 port 改变其默认端口 8000 为 8001,旨在告诉大家有这样的一个功能

总结

如何从零构件一个 FastAPI 程序

  • 导入 FastAPI

  • 创建一个 app 实例。

  • 编写一个路径操作装饰器(如 @app.get("/"))。

  • 编写一个路径操作函数(如上面的 def root(): ...)。

  • 运行开发服务器(如 uvicorn main:app --reload)。

文档

作为一个后端或者 API 开发者,文档书写是一样特别麻烦的事情,特别是 API 修改需要及时修改文档。现在 FastAPI 内置了对文档的支持,后续写完代码就可以把文档的链接,直接丢给他人,省去了很多不必要的麻烦。

直接访问:http://127.0.0.1:8001/docs

![](https://img-blog.csdnimg.cn/direct/820681bc94454559860816138e37976c.png
同时可以直接通过 try it out 按钮直接请求响应的 API

还可以访问:http://127.0.0.1:8001/redoc,得到漂亮的 API 文档界面

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

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

相关文章

Julia语言中的位运算符、赋值运算符、算术运算符

算术运算符 # 使用基本的赋值运算符 a 10 println("a 的初始值是: $a") # 使用加法赋值运算符 a 5 println("a 加上 5 后的值是: $a") # 使用减法赋值运算符 - a - 3 println("a 减去 3 后的值是: $a") # 使用乘法赋值运算符…

CSRF跨站请求伪造(一)

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、CSRF简介 CSRF,全称:Cross-S…

HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(下) 验证:specified启动模式 Ability间切换

上文 HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(上) 验证:singleton、multiton、standard启动模式 我们已经验证完了 singleton multiton standard 三种启动模式 留下了毕竟复杂的 specified 这里 首先 我们要写两个不同的界面 index 编写代码如下 import…

2024最新算法:鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)求解23个基准函数(提供MATLAB代码)

一、鳑鲏鱼优化算法 鳑鲏鱼优化算法(Bitterling Fish Optimization,BFO)由Lida Zareian 等人于2024年提出。鳑鲏鱼在交配中,雄性和雌性物种相互接近,然后将精子和卵子释放到水中,但这种方法有一个很大的缺…

Linux系统源代码数据防泄密加密软件

数据防泄密系统 是一套从源头上保障数据安全和使用安全的软件系统。包含了文件透明加解密、内部文件流转功能、密级管控、离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能。从根本上严防信息外泄,保障信息安全。 www.weaem.com 功能介绍…

手写模拟器,解放双手!效果炸裂的生产工具

手写模拟器是一款基于Handright的仿手写图片生成软件,可以让你的电脑和手机也能写出漂亮的手写字,你只需要输入你想要写的内容,选择你喜欢的字体和背景,就可以生成一张高仿真的手写图片,用于各种场合,比如做…

CloudCompare使用-点云手动分割操作

点云手动分割操作 一、概述二、分割步骤1. 点击分割按钮2. 分割标题栏 一、概述 我们有时候需要对点云进行局部分割,就想对下面这个四棱锥和立方体的组合体给分离出来。 分离的效果如下: 二、分割步骤 1. 点击分割按钮 有两个入口 1. 菜单栏 2. 快…

如何根据玩家数量和游戏需求选择最合适的服务器配置?

根据玩家数量和游戏需求选择最合适的服务器配置,首先需要考虑游戏的类型、玩家数量、预计的在线时间以及对内存和CPU性能的需求综合考虑。对于大型多人在线游戏,如MMORPG或MOBA等,由于需要更多的CPU核心数来支持更复杂的游戏逻辑和处理大量数…

k8s-001-Centos7内核升级

1. 查看内核 [rootlocalhost ~]# uname -a 2. 执行的命令(安装最新版内核): 下载: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安装: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm ( 查看最新版内核&…

深度学习的onnx模型插入新节点构建新模型

import numpy as np import onnx import onnxruntime import onnxruntime.backend as backendmodel onnx.load(test.onnx) node model.graph.node graph model.graph# 1.2搜索目标节点 # for i in range(len(node)): # if node[i].op_type Conv: # node_rise …

Java中的图数据库应用:Neo4j入门

第1章:引言 在数据驱动的时代,咱们处理的不仅仅是数字和文本,还有复杂的关系和网络。想象一下社交网络中人与人之间错综复杂的联系,或者是互联网上网页之间的链接关系,传统的表格数据库已经难以高效地处理这些关系密集…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符,如C盘、D盘、E盘 Linux没有盘符这个概念,只有一个根目录 /,所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中,路径之…

抖音视频批量下载软件|视频评论采集工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具,旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据,也可以通过分享链接进行单个视频的抓取和下载,从而轻松获取抖音视频评论数据。 批量视频提取模块&a…

Java中使用poi+poi-tl实现根据模板导出word文档

场景 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出: 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出_若依导出前端获得到后端的execl流之后怎么操作-CSDN博客 上面讲的是Excel的导出,如果是需要根据w…

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例,即spring没有实例化对象,也就无法根据配置文…

python-基础篇-运算-常见案例

文章目录 出租车车费计价牛顿第二定律虚过多少秒将港珠澳大桥的全长转换成中国古代的丈、尺表示出来 出租车车费计价 import math distance int(input("请输入运行里程数:")) print("本次运行公里数为:\033[31;0m", distance, &qu…

13. Springboot集成Protobuf

目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的? 2.3、如何使用 Protoc 生成代码? 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义…

聊聊 HTTP 性能优化

作为用户的我们在 "上网冲浪" 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢、响应延迟的情况。 而 HTTP 协议作为互联网世界的基础,从网站打开速度到移动应用的响应…

已经淘汰的电脑只能换不锈钢盆了吗?不!你可以换个流畅的系统试试

前言 昨天已经给小伙伴们讲解了,在硬件看起来还不错的情况下,如何自查自行升级电脑硬件,以达到流畅使用Windows10系统的标准。 硬件自查自纠!十年前的电脑可能还可以再战十年 如果可以,谁都不想把Windows系统更换成…

STM32F4 HAL库串口死锁问题调试记录

文章目录 STM32F4 HAL库串口死锁问题调试记录调试方法结果分析解决方法一:方法二: STM32F4 HAL库串口死锁问题调试记录 使用方法:通过串口DMA固定周期向外发送数据,同时开启串口DMA接收用于接收其它板卡发来的数据。 问题&#x…