fastapi quickstart学习
文章目录
- 1. 安装包
- 2. 编写代码
- 3. 终端运行
- 4. 文档
- 5. 增加数据
learn from https://fastapi.tiangolo.com/zh/#typer-fastapi
1. 安装包
# pip install fastapi
# pip install uvicorn[standard]
2. 编写代码
main.py
from typing import Optional # typing 模块用于类型检查
from fastapi import FastAPIapp = FastAPI()@app.get("/")
def read_root():return {'hello': 'world'}@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):return {"item_id": item_id, "q": q}
3. 终端运行
uvicorn main:app --reload
(pt19) D:\gitcode\Python_learning\fastapi\1> uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['D:\\gitcode\\Python_learning\\fastapi\\1']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [6540] using watchgod
INFO: Started server process [32632]
INFO: Waiting for application startup.
INFO: Application startup complete.
uvicorn main:app 命令含义如下:main:main.py 文件(一个 Python "模块")。
app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
在浏览器输入
http://127.0.0.1:8000/items/5?q=somequery
终端显示INFO: 127.0.0.1:4014 - "GET /items/5?q=somequery HTTP/1.1" 200 OK
浏览器显示{"item_id":5,"q":"somequery"}
浏览器输入
http://127.0.0.1:8000/items/x?q=somequery
终端显示
INFO: 127.0.0.1:4014 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:4022 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:4022 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:4015 - "GET /items/x?q=somequery HTTP/1.1" 422 Unprocessable Entity
浏览器显示
{"detail":[{"loc":["path","item_id"],"msg":"value is not a valid integer","type":"type_error.integer"}]}
如果把 main 里面的 : int
删除,则不检查参数类型,原来是框架内部做了强制检查
- 同样的,输入
http://127.0.0.1:8000/
,返回{"hello":"world"}
- 输入
http://127.0.0.1:8000/items/5
,返回{"item_id":5,"q":null}
上面呢,我们创建了具有下面功能的 API
- 通过 路径
/
和/items/{item_id}
接受 HTTP 请求。 - 以上 路径 都接受
GET
操作(也被称为 HTTP 方法)。 /items/{item_id}
路径 有一个 路径参数item_id
并且应该为int
类型。/items/{item_id}
路径 有一个可选的 str
类型的 查询参数 q
4. 文档
- 浏览器输入
http://127.0.0.1:8000/docs
- 浏览器输入
http://127.0.0.1:8000/redoc
5. 增加数据
- 添加 Item 类
# pip install fastapi
# pip install uvicorn[standard]from typing import Optional # typing 模块用于类型检查
from fastapi import FastAPI
from pydantic import BaseModel# pydantic库是一种常用的用于数据接口schema定义与检查的库app = FastAPI()class Item(BaseModel):name: strprice: floatis_offer: Optional[bool] = None@app.get("/")
def read_root():return {'hello': 'world'}@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = 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}
fastapi quickstart学习相关推荐
- Modularity QuickStart学习
创建及运行QuickStart:运行文件WebClientFactorySourceInstall.msi. QuickStart包含以下模块: 1.名字为Customers的business mod ...
- fastapi——简单快速入门
fastapi--快速入门笔记 根据慕课网视频教程 地址:https://www.bilibili.com/video/BV1iN411X72b?p=36 print("\033[31m5. ...
- 使用fastapi完成一个车辆违章查询,可以看到实现页面
使用fastapi完成一个车辆违章查询 FastAPI框架是一个高性能,易于学习,高效编码,生产可用的python,web开发框架. 但对于刚开始学习python不久的同学来说仅仅从官文学习,有一定的 ...
- fastapi 用户权限,登录,退出登录组件
将在前面的话 fastapi默认的组件,官网上其实也有,关于权限什么的,在这里 FastAPI 安全性简介 但是我在学习过程中,发现他官方提供的默认组件,有以下缺陷(当然这些是我个人的一些看法,可能我 ...
- 用了fastapi还需要nginx_专门为API接口开发出现,FastAPI零门槛学习
大概在10年前第一次接触Python的Web开发框架Django之后,第一次觉得原来开发Web程序这么简单,只需要做一些很简单的设计就可以启动一个项目了,在那之前,我还短暂用过JAVA的SSH框架套装 ...
- RocketMQ学习(一):简介和QuickStart
RocketMQ是什么? 引用官方描述: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式 ...
- 【FastAPI 学习十二】定时任务篇 (移步博客园或个人网站 无广告,界面清爽整洁)
声明 目前个人放弃CSDN平台,文章只发布于个人网站和博客园 博客园地址 [FastAPI 学习十二]定时任务篇
- 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI
Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...
- 2021-10-22 学习笔记:FastAPI基础使用指南
2021-10-22 学习笔记:FastAPI基础使用指南 已经第三针疫苗了,祝所有人平安! 简单使用 路径参数 查询参数 请求体 查询参数和字符串校验 路径参数和数值校验 请求体参数 请求体 -- ...
最新文章
- AWS攻略——使用CodeBuild进行自动化构建和部署静态网页
- 大话设计模式C++版——装饰模式
- 决赛评审招募 | 学生创意能有多不羁?快来网易看决赛!
- linux安装python3_关于在linux系统中python第三库的区分和查找
- PhpStorm 配置Xdebug
- luogu P1330 封锁阳光大学
- MongoDB入门教程(1)
- 数组的最后一位的下一位为什么是0?
- word List23
- Docker学习总结(58)——Dockerfile中,ADD和COPY的区别?
- python绘制并列的条形图的方法_如何并排绘制具有相同X坐标的条形图('dodged')...
- 5.7 tensorflow2实现主成分分析(PCA) ——python实战(上篇)
- android+4.3+usb存储模式,点点点:点出来安卓4.3的USB调试
- nginx php访问阻塞,php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
- windows下mysql安装包安装
- 用Python来实现2~7阶行列式的计算
- Android应用程序添加、删除快捷方式
- c.cnzz.com core.php,谷歌浏览器下cnzz统计代码报错被拦截
- python语言中的转义字符_怎么使用Python转义字符
- CTS测试中的testSensorOperations项