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 FastAPI

app = 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 FastAPI

app = 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 FastAPI

app = 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 FastAPI

app = 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协议

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Apollo】赋能移动性:阿波罗自动驾驶系统的影响

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

以 Java NIO 的角度理解 Netty

文章目录 前言Java NIO 工作原理Selector 的创建ServerSocketChannel 的创建ServerSocketChannel 注册 Selector对事件的处理总结 前言 上篇文章《Netty 入门指南》主要涵盖了 Netty 的入门知识,包括 Netty 的发展历程、核心功能与组件,并且通过实例演示…

数据结构:栈和队列(超详细)

目录 ​编辑 栈: 栈的概念及结构: 栈的实现: 队列: 队列的概念及结构: 队列的实现: 扩展知识: 以上就是个人学习线性表的个人见解和学习的解析,欢迎各位大佬在评论区探讨&#…

UDP数据报结构分析(面试重点)

在传输层中有UDP和TCP两个重要的协议,下面将针对UDP数据报的结构进行分析 UDP结构图示 UDP报头结构的分析 UDP报头有4个属性,分别是源端口,目的端口,UDP报文长度,校验和,它们都占16位2个字节,所…

pycorrector一键式文本纠错工具,整合了BERT、MacBERT、ELECTRA、ERNIE等多种模型,让您立即享受纠错的便利和效果

pycorrector:一键式文本纠错工具,整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer、T5等多种模型,让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具。支持中文音似、形似、语法错误纠正,pytho…

kaggle注册不显示验证码

edge浏览器 1.点击浏览器右上角三个点 2.点击扩展 3.点击管理扩展 4.点击获取Microsoft Edge扩展,在左上角输入Head Editor 5.输入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下载后,点保存 成功!

Git分布式版本控制系统基础概念

前言 我们在大学毕业写论文的时候碰到过如下的现象&#xff1a; <<毕业论文第一版.doc>> <<毕业论文第二版.doc>> <<毕业论文第三版.doc>> <<毕业论文最终版.doc>> <<毕业论文完结版.doc>> 你的论文会不断地修改…

JVM - 垃圾收集器

目录 垃圾收集器 串行垃圾收集器 并行垃圾收集器 什么是 吞吐量优先 什么是 响应时间优先 &#xff1f; CMS&#xff08;并发&#xff09;垃圾收集器 G1 垃圾收集器 垃圾收集器 垃圾收集器大概可以分为&#xff1a; 串行垃圾收集器并行垃圾收集器CMS&#xff08;并发&a…

解构软件开发中的破窗效应

目录 一、前言 二、解构破窗效应 三、如何解构&#xff1f; 一、前言 “一个房子如果窗户破了&#xff0c;没有人去修补&#xff0c;隔不久&#xff0c;其它的窗户也会莫名其妙地被人打破&#xff1b;一面墙&#xff0c;如果出现一些涂鸦没有被清洗掉&#xff0c;很快的&#x…

【Unity每日一记】资源加载相关你掌握多少?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

iview中table表头内容换行展示

如图效果图展示表头内容换行展示&#xff0c;代码如下&#xff1a; 在data中定义表头column Columns:[ {title: this.labelFn(Name, Name),key: name,align: center,}, ]在methods中定义方法 labelFn (name, str) {// 在需要换行的地方加入换行符 \n &#xff0c;在搭配最底…

mkv视频格式怎么转换为mp4?

mkv视频格式怎么转换为mp4&#xff1f;实际上&#xff0c;我们将MKV格式的文件转换成 MP4格式之后&#xff0c;能够在很大程度上提高原文件的利用率&#xff0c;也保证了文件的兼容性。很多时候&#xff0c;由于格式限制问题&#xff0c;文件在某些设备和软件上无法正常播放。所…

【内网穿透】如何实现在外web浏览器远程访问jupyter notebook服务器

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook&#xff0c;它是一个交互式的数据科学和计算环境&#xff0c;支持多种编程语言&#xff0c;如…

设计模式之构建器(Builder)C++实现

1、构建器提出 在软件功能开发中&#xff0c;有时面临“一个复杂对象”的创建工作&#xff0c;该对象的每个功能接口由于需求的变化&#xff0c;会使每个功能接口发生变化&#xff0c;但是该对象使用每个功能实现一个接口的流程是稳定的。构建器就是解决该类现象的。构建就是定…

Java课题笔记~ ServletContext

单个Servlet的配置对象 web.xml <servlet><servlet-name>FirstServlet</servlet-name><servlet-class>com.ambow.test.FirstServlet</servlet-class><init-param><param-name>charset</param-name><param-value>utf-8&…

内网搭建电影网站的实现和进行公网访问

如何实现内网搭建电影网站并进行公网访问 文章目录 如何实现内网搭建电影网站并进行公网访问前言1. 把软件分别安装到本地电脑上1.1 打开PHPStudy软件&#xff0c;安装一系列电影网站所需的支持软件1.2 设置MacCNS10的运行环境1.3 进入电影网页的安装程序1.4 对运行环境进行检测…

css3新增选择器总结

目录 一、属性选择器 二、结构伪类选择器 三、伪元素选择器 四、UI状态伪类选择器 五、反选伪类选择器 六、target选择器 七、父亲选择器、后代选择器 八、相邻兄弟选择器、兄弟们选择器 一、属性选择器 &#xff08;除IE6外的大部分浏览器支持&#xff09; E&#…

WebRTC音视频通话-实现iOS端调用ossrs视频通话服务

WebRTC音视频通话-实现iOS端调用ossrs视频通话服务 之前搭建ossrs服务&#xff0c;可以查看&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132257196 这里iOS端使用GoogleWebRTC联调ossrs实现视频通话功能。 一、iOS端调用ossrs视频通话效果图 iOS端端效果图…

【Java 回忆录】Java全栈开发笔记文档

这里能学到什么&#xff1f; 实战代码文档一比一记录实战问题和解决方案涉及前端、后端、服务器、运维、测试各方面通过各方面的文档与代码&#xff0c;封装一套低代码开发平台直接开腾讯会议&#xff0c;实实在线一起分享技术问题核心以 Spring Boot 作为基础框架进行整合后期…

【爱书不爱输的程序猿】公网访问本地搭建的WEB服务器之详细教程

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本地电脑搭建Web服务器并用cpolar发布至公网访问 前言1. 首先将PHPStudy、WordPress、cpolar下载到电脑2. 安装PHPStudy3. 安装cpolar&#xff0c;进入Web-UI界面4.安装wordpress5.…