当前位置: 首页 > news >正文

fastApi基础

1、fastApi简介

在这里插入图片描述
官方文档:https://fastapi.tiangolo.com/
源码: https://github.com/tiangolo/fastapi

在这里插入图片描述

2、环境准备

安装python
安装pycharm
安装fastAPI
安装 uvicorn

在这里插入图片描述
查看已经安装的第三方库:pip list
查看pip 配置信息:pip config list

3、使用虚拟环境

在这里插入图片描述
在这里插入图片描述

3.1方式一 venv

首先为虚拟环境创建一个文件夹,用于存放虚拟环境,命令窗口切换的虚拟环境存放的路径下执行以下命令
python -m venv myenv

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结束虚拟环境:deactivate
在这里插入图片描述

3.2使用virtualenvwrapper-win

在这里插入图片描述
安装:pip install virtualenvwrapper-win

创建虚拟环境:mkvirtualenv myenv2
在这里插入图片描述

3.3多版本共存

在这里插入图片描述
电脑上同时安装多个版本
在安装第二个版本的时候,没有自动设置环境变量。
将第二个版本的安装路径添加到环境变量中
在这里插入图片描述
在相应版本根路径下的python.exe拷贝一个副本,并根据版本号重新命名python3.exe。这样在cmd中直接使用python3就可以调用python3.10版本了
在这里插入图片描述

4、pycharm环境使用问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pycharm中自带的终端存在问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
除pycharm23版本外,针对虚拟环境提出一下建议。

  • 不推荐使用pycharm提供的虚拟环境
  • 如果使用虚拟环境,可以手动新建虚拟环境——手动新建环境后,在pycharm终端中进入虚拟环境并激活,既可以使用虚拟环境
  • 学习过程中使用全局解释器
    因为我使用pycharm23版本,因此我使用pycharm虚拟环境。在虚拟环境中首先安装以下两个包
    pip install fastApi
    pip install uvicorn

5、第一个fastAPI

在这里插入图片描述

from fastapi import FastAPI# 创建一个对象
app = FastAPI()# 在函数上添加一个装饰器,app就是上面创建的对象
# 其中参数是指明路径
@app.get("/")  # 路径(函数)装饰器
def hello():   # 路径函数或接口函数return {"hello":"world698654"}    #接口返回值

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在浏览器中安装json View插件,序列化Json数据
在这里插入图片描述
启动方式二
在这里插入图片描述
在这里插入图片描述

6、路径参数

在这里插入图片描述

  • 静态路径参数
from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/apple")
def apple():return {"name":"apple","price":9.9}@app.get("/huawei")
def huawei():return {"name":"huawei", "price":9.9}
  • 动态参数校验

在这里插入图片描述

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/apple")
def apple():return {"name":"apple","price":9.9}@app.get("/huawei")
def huawei():return {"name":"huawei", "price":9.9}# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):print(type(book_id))  # 默认情况下参数类型为字符串类型return {"id":book_id, "title":f"图书{book_id}"}@app.get("/foods/{food_id}")
def foods(food_id: int):# 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int# 同时进行参数类型校验print(type(food_id))return {"id":food_id, "title":f"图书{food_id}"}

7、接口顺序问题

在这里插入图片描述

在这里插入图片描述

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}@app.get("/books/most_popular")
def most_popular( ):# 因为函数中指定了参数类型为int ,所以fastAPI自动将其转换为int# 同时进行参数类型校验return {"data":"这是本站最畅销的图书"}# 动态路由的解决方式
@app.get("/books/{book_id}")
def books(book_id):print(type(book_id))  # 默认情况下参数类型为字符串类型return {"id":book_id, "title":f"图书{book_id}"}

8、查询参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from fastapi import FastAPIapp = FastAPI()@app.get("/")
def home():return {"home":"首页"}
BOOKS = [{"id":1, "titile":"图书1"},{"id":2, "titile":"图书2"},{"id":3, "titile":"图书3"},{"id":4, "titile":"图书4"},{"id":5, "titile":"图书5"},{"id":6, "titile":"图书6"},{"id":7, "titile":"图书7"},{"id":8, "titile":"图书8"},{"id":9, "titile":"图书9"},{"id":10, "titile":"图书10"},]@app.get("/books")
# 函数中的参数与前端请求的参数必须一直
def books(page:int,size:int):# 假设page=1,size=3,则BOOKS[0:3],从索引0开始取3个数return BOOKS[(page-1)*size:page*size]# @app.get("/books")
# # 函数中的参数与前端请求的参数必须一直
# def books(page,size):
#     print(type(page),print(size)) # 前端传递过来默认类型为size
#     return BOOKS

openAPI

在这里插入图片描述

在这里插入图片描述
在Swagger模式下可以与后台进行交互
在这里插入图片描述
在这里插入图片描述

HTTP协议

在这里插入图片描述

http://www.lryc.cn/news/121221.html

相关文章:

  • Mysql整理二 - 常见查询语句面试题(附原表)
  • Python - 读取pdf、word、excel、ppt、csv、txt文件提取所有文本
  • Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题
  • 持续输出:自媒体持续输出文字内容、视音频创作(视频课程、书籍章节)
  • 篇十七:备忘录模式:恢复对象状态
  • 初识mysql数据库之图形化界面
  • APP外包开发的H5开发框架
  • 高性能跨平台网络通信框架 HP-Socket v5.9.3
  • Vue3.2+TS在v-for的时候,循环处理时间,将其变成xx-xx-xx xx:xx:xx格式,最后教给大家自己封装一个时间hooks,直接复用
  • 05 mysql innodb page
  • 记录一次electron打包提示文件找不到的解决方法
  • 《大型网站技术架构》第二篇 架构-高可用
  • VS Code 使用cnpm下载包失败
  • 【图像分类】CNN + Transformer 结合系列.4
  • 分享一下利用Vue表单处理实现复杂表单布局
  • SAP Fiori 问题收集
  • econml双机器学习实现连续干预和预测
  • 《甲午》观后感——GPT-3.5所写
  • Java技术整理(6)—— 微服务篇
  • 途乐证券-新股行情持续火爆,哪些因素影响首日表现?
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)
  • 基于weka手工实现KNN
  • Lua 闭包
  • Java技术整理(1)—— JVM篇
  • bug解决:AssertionError: No inf checks were recorded for this optimizer.
  • Django笔记之数据库查询优化汇总
  • JVM内存区域
  • 某行业CTF一道流量分析题
  • 【Kafka】1.Kafka简介及安装
  • Kafka API与SpringBoot调用