fastapi学习记录

今天看了点fastap,简单记录下,fastapi是一个python下的后端框架。
参考学习网站菜鸟教程

安装

pip install fastapi
pip install "uvicorn[standard]"

安装好了以后就可以直接使用,最主要的使用方式就是写接口嘛,get,post接口,记录两个例子,

from fastapi import FastAPI

#应用名字就是app
app = FastAPI()

#标记下面这个函数的访问路径就是ip/
@app.get("/")
def read_root():
    return {"Hello": "World"}

一、无参get
注意我的以上代码放在我的main.py里面,所以是main:app,如果你放到其他文件里面要改main

uvicorn main:app --reload

然后就成功
在这里插入图片描述

二、传参get

from typing import Union

#Union代表q可以是str也可以什么都不传
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

在这里插入图片描述

三、POST

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: Union[bool, None] = None

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

然后在127.0.0.1:8000/docs接口文档下测试

在这里插入图片描述

四、其他
4.1 一般fastapi接口接收字典时使用的类要继承pydantic的BaseModel

4.2 使用Form可以检测是否符合标准,在定义model的时候使用

from pydantic import BaseModel, Field
class Item(BaseModel):
    name: str = Field(..., title="Item Name", max_length=100)
    description: str = Field(None, title="Item Description", max_length=255)
    price: float = Field(..., title="Item Price", gt=0)

4.3 使用fastapi包下的HTTPException可以根据传入的数据返回状态码

from fastapi import HTTPException
@app.get("/items/{item_id}")
def read_item(item_id: int):
    if item_id == 42:
        raise HTTPException(status_code=404, detail="Item not found")
    return {"item_id": item_id}

4.4 fastapi文件上传功能

from fastapi import FastAPI, File, UploadFile
app = FastAPI()
# 路由操作函数
@app.post("/files/")
async def create_file(file: UploadFile = File(...)):
    return {"filename": file.filename}

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

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

相关文章

FMEA与智能机器人:提升机器人可靠性与安全性的关键

随着科技的飞速发展,智能机器人已经深入到我们生活的方方面面,从工业生产到家庭服务,从深海探险到太空探索,处处都有它们的身影。然而,随着应用的日益广泛,机器人系统的复杂性和不确定性也在增加&#xff0…

速成软件书是神器还是焦虑?

一、背景 "速成软件书"通常是指那些宣称能帮助读者在短时间内掌握某种软件操作或编程技能的书籍。这类书籍往往以其高效、快捷的学习路径吸引读者,尤其适合有一定基础或者急需短期内提升特定技能的人群。 然而,“神器”之称则带有主观性和一…

双端队列deque和vector以及list的优缺点比较

参考:https://blog.csdn.net/TWRenHao/article/details/123483085 一、vector vector具体用法详情点这里 优点: 支持随机访问 CPU高速环缓存命中率很高 缺点: 空间不够,便需要增容。而增容代价很大,还存在一定的空间浪费。 头部…

数据可视化为什么能在智慧港口中发挥作用?

随着全球贸易活动日益频繁,港口作为国际贸易的重要节点,其运营效率与智能化程度直接影响着整个物流链的效能。在此背景下,智慧港口的概念应运而生,它借助先进的信息技术手段对传统港口进行改造升级,其中,数…

基于Arduino IDE 野火ESP8266模块 文件系统LittleFS 的开发

一、文件系统LittleFS的介绍 LittleFS是一个为微控制器设计的轻量级、可靠且高性能的文件系统。它专为嵌入式设备打造,拥有占用空间小、对硬件要求低的特点,同时保证在断电情况下数据的完整性和稳定性。 1.设计与特点 LittleFS的设计旨在提供嵌入式系统所…

第三十二天-Django模板-DTL模板引擎

目录 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 3.与jinja2区别 4.模板标签使用 1.循环 2.条件控制 3.注释 4.url解析 5.显示时间 5.模板的基础与包含 6.过滤器 内置过滤器 自定义过滤器 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 与jinja2语法相似…

PHP图床程序优化版:图片外链服务、图床API服务、图片CDN加速与破解防盗链

图片免费上传 支持本地储存、FTP储存、第三方云储存(阿里云 OSS、腾讯云 COS、七牛云等)。 图片外链加速 一键转换第三方网站的图片外链地址为图床可分享的图片地址(支持CDN)。 图片解析服务 直接将第三方外链图片地址显示为…

Linux网络配置(超详细)

Linux网络配置大全 Linux网络配置一.网络地址配置网络地址查看–ifconfig使用网络配置命令设置网络接口参数-ifconfig禁用(临时)或者重新激活网卡设置虚拟网络接口 修改网络配置文件网络接口配置文件 IP命令详解OPTIONS选项OBJECT对象 ip link 二、获取和修改主机名hostname查看…

数对 离散化BIT

先把公式变个形&#xff0c;然后直接BIT 枚举右端点查询左端点累加答案 离散化好题&#xff0c;注意BIT写的时候右端点的范围是离散化区间的大小 #include<bits/stdc.h> using namespace std; #define int long long using ll long long; using pii pair<int,int&…

【IC前端虚拟项目】write_path子模块DS与RTL编码

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 read_path的代码完成之后,就可以开始整个项目里复杂度最高、bug最多、时序收敛最为困难的模块——write_path的开发了!我自己写过两次这个虚拟项目,每次都是在这里耗时最久,所以大家也可以挑战一下自…

MAC上好用的文件查找软件

和windows上的everything很像&#xff0c;不过就是要钱&#xff0c;我简单测试了一下还可以蛮好用的&#xff0c;

【QT入门】 QTabWidget各种常见用法详解

往期回顾&#xff1a; 【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客 【QT入门】 Qt代码创建布局之setLayout使用-CSDN博客 【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】 QTabWidget各种常见用法详解 一般来说&#xff0c;学一个新的控…

关系型数据库mysql(7)sql高级语句①

目录 一.MySQL常用查询 1.按关键字&#xff08;字段&#xff09;进行升降排序 按分数排序 &#xff08;默认为升序&#xff09; 按分数升序显示 按分数降序显示 根据条件进行排序&#xff08;加上where&#xff09; 根据多个字段进行排序 ​编辑 2.用或&#xff08;or&…

以新质生产力引领智能锁行业腾飞,凯迪仕打造全球最大智能安防产业园

凯迪仕&#xff0c;作为智能锁行业的领军企业&#xff0c;今日在温州举行了凯迪仕全球超级工厂落成庆典。积极拥抱新质生产力&#xff0c;大力发展智能制造&#xff0c;凯迪仕在全球制造业科技创新的制高点上迈出了坚实的步伐。 浙江省温州市瓯海区委副书记、区长刘云峰&#x…

作者开发的爬取妹子图片Python项目,值得你收藏拥有

最好的学习方法在于实践&#xff0c;学习编程语言Python&#xff0c;也是同样的道理。本文讲解自己开发的一个项目&#xff0c;实现爬取妹子图片&#xff0c;所用的Python知识点以及模块&#xff0c;可以关注参考作者公众号的Python语言合集。 —、前情介绍 1.1 涉及模块 本…

泛微E-Office10 < 10.0_20240222 远程代码执行漏洞

一、软件背景 泛微e-office是一套企业级电子办公解决方案&#xff0c;提供文档管理、流程审批、协同办公等功能&#xff0c;帮助企业实现数字化办公、提高工作效率。 二、影响版本 e-office10[10.0_20180516, 10.0_20240222) 三、漏洞分析 在受影响版本中&#xff0c;由于…

缺省和重载.引用——初识c++

. 个人主页&#xff1a;晓风飞 专栏&#xff1a;数据结构|Linux|C语言 路漫漫其修远兮&#xff0c;吾将上下而求索 文章目录 C输入&输出cout 和cin<<>> 缺省参数全缺省半缺省应用场景声明和定义分离的情况 函数重载1.参数的类型不同2.参数的个数不同3.参数的顺…

【AIGC】如何在Windows/Linux上部署stable diffusion

文章目录 整体安装步骤windows10安装stable diffusion环境要求安装步骤注意事项参考博客其他事项安装显卡驱动安装cuda卸载cuda安装对应版本pytorch安装git上的python包Q&A linux安装stable diffusion安装anaconda安装cudagit 加速配置虚拟环境挂载oss&#xff08;optional…

实时渲染是什么意思?实时渲染和离线渲染的区别

一、实时渲染是什么意思&#xff1f; 实时渲染是指在计算机程序运行时即时地生成图像和动画的过程&#xff0c;这种渲染技术通常用于网络游戏、虚拟现实和增强现实等需要实时交互的XR应用中。实时渲染需要在每秒内渲染数百万到数十亿个像素&#xff0c;以呈现出平滑的动画和交…

位运算算法(2)

目录 面试题 01.01. 判断字符是否唯一 一、题目描述 二、思路解析 三、代码 268.丢失的数字 一、题目描述 二、思路解析 三、代码 371.两整数之和 一、题目描述 二、思路解析 三、代码 137.只出现一次的数字 II 一、题目描述 二、思路解析 三、代码 面试题 01.0…