FastAPI 的 quickstart

news2024/9/23 19:17:07

从这一章往后我们就正式开始学习 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 文档界面

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)

基于Springboot的高校竞赛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统,本系统有管理员、老师、专家以及用户四种角色; 管理员:首页、个人中心、管…

Stable Cascade又升级了,现在只需要两个模型

Stable Cascade这个模型,大家如果还有印象的话,是需要下载三个模型的,分别是Stage_a,Stage_b和Stage_c,如果全都下载下来,需要20多个G,但是最近使用ComfyUI做尝试的时候,发现官方的案例中已经没有用到单独的…

Redis是单线程还是多线程?

单线程为什么这么快的原因: 后来引入了多线程是因为:

微信小程序云开发教程——墨刀原型工具入门(动态组件)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

[Linux]如何理解kernel、shell、bash

文章目录 概念总览kernelshell&bash 概念总览 内核(kernel) ,外壳(shell) ,bash kernel kernel是指操作系统中的核心部分,用户一般是不能直接使用kernel的。它主要负责管理硬件资源和提供系统服务,如内存管理、进程管理、文件…

Python列表中添加删除元素不走弯路

1.append() 向列表中添加单个元素,一般用于尾部追加 list1 ["香妃", "乾隆", "贾南风", "赵飞燕", "汉武帝"]list1.append("周瑜") print(list1) # [香妃, 乾隆, 贾南风, 赵飞燕, 汉武帝, 周瑜]…

bootstrap-table 多层组合表头

如下图所示的二层组合表头 来人,上代码! table.bootstrapTable({url: $.fn.bootstrapTable.defaults.extend.index_url,pk: id,sortName: id,search: false,showToggle: false,showColumns: false,showExport: false, commonSearch: false,columns: [[…

Linux笔记-1

概述 简介 Linux是现在服务器上最常用的操作系统(OS - Operating system) - 所谓的操作系统本质上也是一个软件,是一个可以运行其他软件的容器如果一台服务器,没有安装操作系统,此时称之为裸机。裸机可以使用,在使用的时候需要使…

禅道:提bug、管理case 7.0

一、禅道的介绍 (1)定义禅道是一个项目管理工具,也是一个bug管理工具,还是一个用例管理工具。 (2)作用:为了解决众多企业在管理中出现混乱,无序的现象,开发出来 &…

【MATLAB源码-第153期】基于matlab的OFDM系统插入导频和训练符号两种信道估计方式误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种高效的无线信号传输技术,广泛应用于现代通信系统,如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

小白学视觉 | 详解遗传算法 GA(Python实现代码)

本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。 原文链接:详解遗传算法 GA(Python实现代码) 转自:机器之心 英文:www.analyticsvidhya.com/blog/2017/07/introduc…

提升户外LED显示屏散热效率的关键方法

LED显示屏在户外长时间使用时,散热成为一项关键问题。散热不仅影响显示屏的寿命,还可能导致显示效果下降甚至安全隐患。以下是提升户外LED显示屏散热效率的关键方法: 综合利用传热机理:LED显示屏的散热可以通过导热、对流和辐射等…

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

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

【Python】进阶学习:pandas--isin()用法详解

【Python】进阶学习:pandas–isin()用法详解 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅…

二叉树(Java)

目录 一、概念二、 两种特殊的二叉树三、 二叉树的性质四、二叉树的存储五、二叉树的基本操作1、二叉树的遍历(1)前中后序遍历(2)层序遍历 2、基本操作 六、总结 一、概念 一棵二叉树是结点的一个有限集合,该集合&…

java使用itex生成PDF

Text是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 项目要使用iText,必须引入jar包。才能使用,maven依赖如下&…

在线开源免费问卷调查系统

在线开源免费问卷调查系统 平台简介 本项目旨在提供一个简单易用的问卷调查平台,帮助用户创建、分享问卷,并收集、分析调查数据。我们希望能够为各行各业的调查需求提供一种高效、便捷的解决方案。 项目特点 用户友好:清晰直观的用户界面…

【SpringBoot】测试单元使用多线程

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 问题产生 今天学习了乐观锁,但在测试单元执行多线程的时候出现了问题,多线程并没有直接结果 在控制台没有任何输出…

★【二叉搜索树(中序遍历特性)】【 ★递归+双指针】Leetcode 98. 验证二叉搜索树

★【二叉搜索树(中序遍历特性)】【 ★递归双指针】Leetcode 98. 验证二叉搜索树 二叉搜索树 98. 验证二叉搜索树解法1 笨 中序递归遍历为一个数组 然后判断数组是不是升序排列就可以★解法2 不使用数组 递归法 ---------------🎈&#x1f38…

电脑中msvcp140_CODECVT_IDS.dll丢失的解决方法分享

msvcp140_CODECVT_IDS.dll是Microsoft Visual C 2015 Redistributable Package的一个组成部分,它是一个动态链接库(DLL)文件,包含了运行基于C编译的应用程序时所需的特定编码转换支持。这个dll文件特别与字符编码转换和本地化支持…