python-FastApi框架

news2024/9/27 5:46:13

文章目录

  • FastApi
    • 一. 简介
    • 二. 特性
    • 三. 安装
      • 1. 安装fastapi模块
      • 2. 安装ASGI服务器( Uvicorn 或者 Hypercorn)
    • 四. 实例
      • 1. 创建**main.py**文件(GET请求)
      • 2. 运行
      • 3. 测试
      • 4. 更新main_py(加入PUT请求)
    • 五. 自动化API文档
      • 1. Swagger UI(交互式文档)
      • 2. ReDoc(可选式文档)

FastApi

一. 简介

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。

二. 特性

  1. 快速:可与 NodeJS 和 Go 并肩的极高性能(归功于 Starlette 和 Pydantic)。最快的 Python web 框架之一。

  2. 高效编码:提高功能开发速度约 200% 至 300%。*

  3. 更少 bug:减少约 40% 的人为(开发者)导致错误。*

  4. 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。

  5. 简单:设计的易于使用和学习,阅读文档的时间更短。

  6. 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。

  7. 健壮:生产可用级别的代码。还有自动生成的交互式文档。

  8. 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

三. 安装

1. 安装fastapi模块

pip install fastapi

2. 安装ASGI服务器( Uvicorn 或者 Hypercorn)

pip install "uvicorn[standard]"

四. 实例

1. 创建main.py文件(GET请求)

from typing import Union

from fastapi import FastAPI

app = FastAPI()

# GET请求
@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

2. 运行

uvicorn main:app --reload

–reload可以使之mian:app代码更新时服务器随之推送,即时更新

3. 测试

访问:https://127.0.0.1:8000/

可以得到一个json为{“Hello”: “World”}的数据

访问http://127.0.0.1:8000/items/5?q=somequery

可以得到一个json为{“item_id”: 5, “q”: “somequery”}的数据

与代码中read_root,read_item

4. 更新main_py(加入PUT请求)

from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


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


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

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

这里就不需要重新启动uvicorn服务了

五. 自动化API文档

1. Swagger UI(交互式文档)

访问 http://127.0.0.1:8000/docs
如图所示:
在这里插入图片描述

2. ReDoc(可选式文档)

访问 http://127.0.0.1:8000/redoc
如图所示:
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云征文|Flexus云服务器X,云上性能新飞跃,开启业务增长新纪元

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,AWS/阿里云资深使用…

想告诉所有人,我找到脸书视频保存方法啦!

各位集美集帅们,我可算找到脸书视频的保存教学啦。作为社媒体人,在脸书看到有趣的素材却保存不了时真的要急的爆炸了。试了好多方式,这软件是最给力哒,我不管,下面的步骤介绍你一定要看完! 打开脸书&#x…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机? 如果通俗点来讲,我们在电脑上一行行敲出来的代码,电脑本身是不认识的,最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换,所以呢,就需要一个工具&#xff0…

关于redis存储数据类型选择

项目使用的spring-boot,操作redis使用的是spring redis的api 在序列化的时候,如果往redis存入的是比较小的数字,反序列化的时候,会是integer类型 如果字段定义的是Long类型,因为比较小,所以被反序列化成i…

Cadence高速板设计技巧(全志H3)

市场上一般的电视屏幕是4K的: cadence查找: 右侧的面板FIND里面输入要查找的名字就可以进行查找。 全局查找需要鼠标点击到.DSN的,进入全局。 在视图里选择一个层就可以单独查看这个层的东西,屏蔽掉其他层的东西: 共…

linux命令:用于删除空目录的命令行工具rmdir详细介绍

目录 一、概述 二、用法 1、基本语法 (1)选项 (2)目录... 2、主要选项 (1)-p, --parents (2) -v, --verbose (3) -h, --help (4&#x…

Mysql基础练习题 596.查询至少有5个学生的所有班级 (力扣)

596.查询至少有5个学生的所有班级 建表插入数据: Create table If Not Exists Courses (student varchar(255), class varchar(255)) Truncate table Courses insert into Courses (student, class) values (A, Math) insert into Courses (student, class) value…

指针进阶(多级指针)

0.多级指针命名 多级指针命名,最主要的是要知道该指针指向的是什么数据。 一.1级指针 - 指向一个变量 若定义一个变量 int a,那么 目标类型就为 int。 所以该指针应该定义为 int *p; /* 目标 */ int a;/* 目标类型 *p */ int *p;/* 指向目标 */ p a;二…

服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例

服务器存储数据恢复环境: 一台存储中有一组由12块SAS硬盘组建的raid6磁盘阵列,划分了1个卷,由数台Vmware ESXI主机共享存储。卷中存放了大量的Windows系统虚拟机。这些虚拟机系统盘大小一致,数据盘大小不确定,数据盘都…

安卓主板_MTK安卓主板定制_联发科主板/开发板方案

这款安卓主板采用了联发科的MTK8788、MTK8768及MTK8766系列芯片平台,运用了64位四核/八核 Cortex-A53/A73架构,主频高达2.0 GHz。主板配置了4GB LPDDR3内存和64GB eMMC存储,同时配备了ARM Mail-T450 MP2图形处理单元(GPU),使其在4…

PbootCMS程序安全设置建议

近期遇到部分使用PbootCMS开源程序的客户反馈网站被挂马/入侵等情况,我司核实原因是由于此程序存在漏洞,用户可以按照以下建议进行安全设置。 虚拟主机 一、程序建议: 1、登录后台,将程序升级到最新版本,密码重置为…

算力网络痛点;对象存储OSS;CPN功能模块

目录 算力网络 算力网络痛点:度量困难、种类繁多、分布广泛、归属复杂。 CPN功能模块 对象存储OSS 算力网络 在分析算力资源的特点前,我们首先要明确算力的概念。算力,也称为计算力或计算能力。该词的最早来源已经不可查证,互联网上的资料大多与区块链相关。这是因为区…

MyBatis拦截器面试题

JDBC的执行流程 (面试题一) MyBatis执行流程(面试题二) (我的猜测:1执行器通过工厂执行Mapper类,,2.语句映射器处理mappe文件成对象,3把前端传过来的参数映射到对象里,4输出结果映射) Mybatis拦截器(四个) 拦截的执行顺序是Execu…

ubuntu设置为自己需要的屏幕分辨率

先说一下我处理该问题的大体背景:我是学习Linux的新手,刚学完嵌入式Linux驱动开发相关课程。现在想接着学习一下QT开发。我是在电脑上装了虚拟机之后安装的ubuntu系统。因为换了电脑,所以重新装了ubuntu系统。但是,装完ubuntu系统…

AI Agent从实操体验到代码理解

一、从体验出发 从chatbot到co-pilot,LLM应为的场景不断在扩大,形式也越来越多样化,到如今,chatbot的风头基本已过,co-pilot正在成为大模型嵌入到产品里面的主要形态,但随着PMF(产品市场契合度&…

基于asp.net的webform图书管理系统附源码

今天给大家分享一个c#的图书管理系统,采用的SQLserver数据库,VS开发,详情如下 1.主要功能 主要功能包含用户注册登陆、借书管理、还书管理、管理员登陆、个人中心 、密码修改、图书分类、图书管理等等。2.开发工具及其环境 系统采用VS2013…

MySQL批量插入测试数据的2种方式

在开发过程中我们不管是用来测试性能还是在生产环境中页面展示好看一点, 又或者学习验证某一知识点经常需要一些测试数据, 这个时候如果手敲的话, 十行二十行还好, 多了就很死亡了, 接下来介绍两种常用的MySQL测试数据批量生成方式: 存储方式函数 Navicat的数据生成…

投屏软件哪个好用又免费?4款投屏软件,远程且兼容多平台!

投屏软件哪个好用又免费?不论是在工作中做演示、在家中娱乐观影,还是在学习中进行远程教学,投屏软件都能让你的设备实现多屏互动,让体验更为流畅和便捷。今天,我就为大家推荐几款热门的投屏软件。 1. 乐播投屏&#xf…

第二证券:白酒股,全线飘红

A股首要指数走势分化,到午间收盘,沪指跌0.45%,深成指涨1.03%,创业板指涨0.8%。近4000只个股上涨,两市半日成交3854亿元,较上日同期放量629亿元。 盘面上,光伏设备板块冲高,快可电子…

【区间dp、字符串处理】P4290 [HAOI2008] 玩具取名 题解

前言 毒瘤的字符串杂题 题意 给定 A , B , C , D ( A , B , C , D ≤ 16 ) A,B,C,D(A,B,C,D \leq 16) A,B,C,D(A,B,C,D≤16) 四个数,依次代表 W I N G 四个字母分别能用哪些含有 W I N G 四个字母且长度为 2 2 2 的字符串表示,如以下输入样例&#…