FastAPI 的 quickstart

2024-03-03 02:04
文章标签 fastapi quickstart

本文主要是介绍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 uvicornuvicorn.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 文档界面

这篇关于FastAPI 的 quickstart的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768115

相关文章

构建现代API:FastAPI中Query与Body参数的最佳搭配

在FastAPI中,Query 和 Body 是两种不同的依赖注入器,它们的应用场景取决于你的具体需求。以下是它们各自常见的使用场景: Query 参数 使用场景: 当你需要从URL中获取一些简单的参数时,例如过滤、排序、分页等。 当数据量不大,且可以作为URL的一部分安全传输时。当数据不需要复杂的结构时。 Body 参数 使用场景: 当你需要发送较为复杂的数据结构时,例如包含多个字段

用python fastapi写一个http接口,使ros2机器人开始slam toolbox建图

如果你想使用Python的FastAPI框架编写一个HTTP接口,以便通过接口启动ROS 2机器人的SLAM Toolbox建图,可以按照以下方式进行: 首先,确保你已经安装了fastapi和uvicorn库。你可以使用以下命令进行安装: pip install fastapi uvicorn 接下来,创建一个Python文件(例如app.py),并将以下代码添加到文件中: import

使用nssm将fastapi做成服务解决cmd使用命令启动卡顿问题

下载nssm 点击下载 我使用的是64位的操作系统所以选择64位win64 点击进去在地址栏里面输入cmd回车 输入 nssm.exe install "想要做成的服务名称" "python路径精确到python.exe" "程序路径要绝对路径" 然后就做出了服务并且启动 可以在服务管理控制台中(可以通过运行services.msc命令来打开)找到你的服务,并可以右键点击进行启动、停止

FastAPI 中间件与依赖注入:打造灵活的 API 架构

在 FastAPI 中,Depends 是一个非常重要的概念,它用于依赖注入。依赖注入是一种设计模式,允许你将组件(如函数、类或服务)之间的依赖关系明确地表达出来,而不是硬编码在组件内部。这使得代码更加模块化、可测试和易于维护。 什么是 Depends? Depends 通常用于以下场景: 参数注入:将参数注入到路由处理函数中。服务注入:将服务或工具类的实例注入到路由处理函数中。前置验证:在

dockerfile部署fastapi项目

dockerfile部署fastapi项目 1、Dockerfile # 使用Python官方镜像作为基础镜像FROM python:3.8-slim# 更新apt-get源并安装依赖# RUN apt-get update -y && apt-get install -y git# 设置环境变量ENV PYTHONDONTWRITEBYTECODE 1ENV PYTHONUNBUFF

FastAPI 中的 Query:优化你的数据获取策略

在 FastAPI 中,Query 是一个依赖项类,用于处理来自 HTTP 请求的查询参数。查询参数是 URL 的一部分,通常用于 GET 请求,它们在 URL 的路径之后,以 ? 开头,参数之间用 & 分隔。例如:http://example.com/api/items?name=foo&age=42。 Query 的作用和用途: 类型声明:Query 允许你为查询参数声明一个预期的数据类

FastAPI Query 类详解:参数验证与高级用法

在 FastAPI 中,Query 类用于定义查询参数,并提供了多种参数来限制和描述这些参数。以下是一些常用的参数,它们可以用来限制和描述 Query 类的实例: default: 描述:设置参数的默认值。类型:任何类型。示例:default=None alias: 描述:为参数设置一个别名,这在 URL 中使用的名称与函数参数名称不一致时非常有用。类型:str示例:alias="my_al

FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 查询参数和分页实现

回顾 获取路径参数什么是路径参数?/user/{id}什么时候使用?需要传递参数怎么实现类型转换?声明参数的类型怎么捕获文件路径?{file_path:path} 什么是查询参数 查询字符串是键值对的集合,这些键值对位于 URL 的 ? 之后,以 & 分隔。 http://127.0.0.1:8000/items/?skip=0&limit=10 上面的 skip=0&limit=10

FastAPI+Vue3零基础开发ERP系统项目实战课 20240831上课笔记 路径参数

遗留的问题 3、FastAPI4、MySQL85、SQLModel,和FastAPI框架是同一个作者,两者结合比较好用,但是学习成本较高,使用难度稍大6、Vue37、Tailwindcss8、Ant Design Vue,UI组件库9、数据同步:有一个API,这个API提供了一些数据,需要在ERP系统中进行展示。10、登录注册需要吗?需要11、第三方平台管理:对接哪些接口平台飞书,钉钉,聚水潭等

fastapi接口里日志重复写,用metaclass 单例模式解决了

遇到这个妖 我用fastapi写接口,打印日志用我自定义的日志类,但只要是fastapi 接口[即注解@app.get(‘/’) 或者 @app.post(‘/’) ] 之内打印的都是两遍,其他地方都是正常。这我很费解。说是我日志类的问题吧,我这类放其他地方都好使;说是fastapi的问题吧,人家日志格式跟我自定义的差别又很明显。 我自定义的logging类: import logging