文章目录

  • 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学习相关推荐

  1. Modularity QuickStart学习

    创建及运行QuickStart:运行文件WebClientFactorySourceInstall.msi. QuickStart包含以下模块: 1.名字为Customers的business mod ...

  2. fastapi——简单快速入门

    fastapi--快速入门笔记 根据慕课网视频教程 地址:https://www.bilibili.com/video/BV1iN411X72b?p=36 print("\033[31m5. ...

  3. 使用fastapi完成一个车辆违章查询,可以看到实现页面

    使用fastapi完成一个车辆违章查询 FastAPI框架是一个高性能,易于学习,高效编码,生产可用的python,web开发框架. 但对于刚开始学习python不久的同学来说仅仅从官文学习,有一定的 ...

  4. fastapi 用户权限,登录,退出登录组件

    将在前面的话 fastapi默认的组件,官网上其实也有,关于权限什么的,在这里 FastAPI 安全性简介 但是我在学习过程中,发现他官方提供的默认组件,有以下缺陷(当然这些是我个人的一些看法,可能我 ...

  5. 用了fastapi还需要nginx_专门为API接口开发出现,FastAPI零门槛学习

    大概在10年前第一次接触Python的Web开发框架Django之后,第一次觉得原来开发Web程序这么简单,只需要做一些很简单的设计就可以启动一个项目了,在那之前,我还短暂用过JAVA的SSH框架套装 ...

  6. RocketMQ学习(一):简介和QuickStart

    RocketMQ是什么? 引用官方描述: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 支持严格的消息顺序 支持Topic与Queue两种模式 亿级消息堆积能力 比较友好的分布式 ...

  7. 【FastAPI 学习十二】定时任务篇 (移步博客园或个人网站 无广告,界面清爽整洁)

    声明 目前个人放弃CSDN平台,文章只发布于个人网站和博客园 博客园地址 [FastAPI 学习十二]定时任务篇

  8. 『Python学习笔记』Python中的异步Web框架之fastAPI介绍RestAPI

    Python中的异步Web框架之fastAPI介绍&RestAPI 文章目录 一. fastAPI简要介绍 1.1. 安装 1.2. 创建 1.3. get方法 1.4. post方法 1.5 ...

  9. 2021-10-22 学习笔记:FastAPI基础使用指南

    2021-10-22 学习笔记:FastAPI基础使用指南 已经第三针疫苗了,祝所有人平安! 简单使用 路径参数 查询参数 请求体 查询参数和字符串校验 路径参数和数值校验 请求体参数 请求体 -- ...

最新文章

  1. AWS攻略——使用CodeBuild进行自动化构建和部署静态网页
  2. 大话设计模式C++版——装饰模式
  3. 决赛评审招募 | 学生创意能有多不羁?快来网易看决赛!
  4. linux安装python3_关于在linux系统中python第三库的区分和查找
  5. PhpStorm 配置Xdebug
  6. luogu P1330 封锁阳光大学
  7. MongoDB入门教程(1)
  8. 数组的最后一位的下一位为什么是0?
  9. word List23
  10. Docker学习总结(58)——Dockerfile中,ADD和COPY的区别?
  11. python绘制并列的条形图的方法_如何并排绘制具有相同X坐标的条形图('dodged')...
  12. 5.7 tensorflow2实现主成分分析(PCA) ——python实战(上篇)
  13. android+4.3+usb存储模式,点点点:点出来安卓4.3的USB调试
  14. nginx php访问阻塞,php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
  15. windows下mysql安装包安装
  16. 用Python来实现2~7阶行列式的计算
  17. Android应用程序添加、删除快捷方式
  18. c.cnzz.com core.php,谷歌浏览器下cnzz统计代码报错被拦截
  19. python语言中的转义字符_怎么使用Python转义字符
  20. CTS测试中的testSensorOperations项

热门文章

  1. pandas读写各种类型数据
  2. 初学大数据之Python中5个最佳的数据科学库的学习
  3. 综合素质计算机考点,教师资格证小学综合素质考点及考试真题:信息处理能力...
  4. 立体匹配十大概念综述---立体匹配算法介绍
  5. 计算机表格复制粘贴后不变,excel表格复制粘贴后格式不变
  6. uboot源码——命令体系
  7. 二维数组数和指针操作的理解
  8. 决策树php,决策树模型组合之随机森林与GBDT
  9. springaop----springaop的使用(一)
  10. Java_基础—List的三个子类的特点