python-FastApi框架

文章目录

  • 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 Unionfrom fastapi import FastAPIapp = 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 Unionfrom fastapi import FastAPI
from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strprice: floatis_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.rhkb.cn/news/411749.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企微获客链接 中文乱码问题处理

企微获客链接 中文乱码问题处理 问题背景问题处理补充内容 问题背景 为了推广产品,同时更好的服务客户,公司在接入企业微信后,需要用到企微获客链接相关推广操作,那么通过API 接口创建企微获客链接时,出现了中文乱码问…

OpenCV 图像处理基础算法介绍c++

VS2022配置OpenCV环境 关于OpenCV在VS2022上配置的教程可以参考:VS2022 配置OpenCV开发环境详细教程 图像处理 图像处理是一个广泛的领域,它涉及到对图像数据进行分析、修改和改进的各种技术。以下是一些基本的图像处理操作,这些操作通常可…

AntV G6 的坑之——渲染残留/残影

G6 4.x 依赖的渲染引擎 antv/g4.x 版本支持了局部渲染,带了性能提升的同时,也带来了图形更新时可能存在渲染残影的问题。比如拖拽节点时,节点的文本会留下轨迹。 解决办法: 关闭局部渲染,graph.get("canvas"…

uni-app组件

一. 什么是组件,有什么好处? 在uni-app中,组件是构成应用的基本单位,它们是用来定义用户界面的一部分,并且通常包含了视图和逻辑。组件的设计使得开发者能够以声明式的方式构建应用界面,并且通过组件化的开发方式来提高代码的复…

Centos7 java安装

卸载自带 jdk 查询所有的 java( 使用最小配置命令行则查询不出 java 直接进行安装即可 ) 卸载以下4个java软件 删除之后在使用命令进行查询 rpm -qa | grep java 解压jdk: 找到下载位置 使用Ctrlf搜索 配置环境变量: 打开/ etc/profile 在末尾添加以下…

旅游行业怎么利用C#接口发送短信

旅游企业一般拥有众多的分支机构,同时各地分支机构又有众多下属分散在当地各区的旅游营业报名点,以前传统的解决方案是采用专线、MODEM拔号等方式,专线的成本很高,MODEM拔号更费时,且长途拔号互联成本在多点情况下费用…

【一起学Rust | 框架篇 | Tauri2.0框架】rust和前端的相互调用(前端调用rust)

文章目录 前言1. 前端调用rust(command)1. 在后端定义一个command2. 注册command3. 前端调用command 2. 前端调用rust(event)4. command完整实例 前言 本期将继续接着上一期,继续探索tauri中rust和前端的相互调用&…

【ceph学习】ceph如何进行数据的读写(1)

版本 ceph版本为17. ceph如何进行读写接口的实现 Ceph的客户端通过librados的接口进行集群的访问,这里的访问包括: 1)对集群的整体访问 2)对象的访问 两类接口,这套接口(API)包括C、C和Pytho…

XXE-labs靶场通关攻略

环境地址自行查找 1.寻找靶机地址 使用工具goby进行扫描 因为我的靶场是搭在ubuntu上 直接查找系统是Ubuntu的就可以找到 靶机IP 172.16.1.183 2.访问靶场 3.使用目录扫描工具进行扫描 使用kali自带的dirsearch进行扫描 可以看到一个robots.txt文件 4.访问robots.txt文件 …

发顶会首选:具身智能!新成果直接霸榜CVPR

最近无论是斯坦福机器人炒虾,还是特斯拉官宣机器人进厂,都赚足了眼球,实力证明了具身智能的火爆。 先不说具身智能是实现AGI的关键环节,也是未来研究的重要方向,我们就从发论文的角度来看,今年的各大顶会&…

【已解决】JS Uncaught DOMException: Failed to construct ‘Worker’ 所有场景

【已解决】JS Uncaught DOMException: Failed to construct ‘Worker’ 所有场景 概述 在JavaScript中,Web Workers允许我们运行后台脚本,这些脚本不会影响到页面的性能。然而,当我们尝试创建一个新的Worker时,有时会遇到“Uncau…

【C++】初识C++模板与STL

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理 本章将简单分享C模板与STL相关知识,与之相关更多知识将留到下次更详细地来分享给大家 &#x1f3…

【微信小程序】全局数据共享 - MobX

1. 什么是全局数据共享 2. 小程序中的全局数据共享方案 3.Mobx的使用 1.npm init -y(根据实际情况选择) 在小程序项目中,可以通过 npm 的方式引入 MobX 。 如果你还没有在小程序中使用过 npm ,那先在小程序目录中执行命令: npm init -y2. …

坐牢第三十一天(c++)

一.作业&#xff1a; 使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 #include <iostream> #include <cstring> // 引入cstring以使用memcpy using namespace std; // 类型重命名 using datatype int; // typedef int datatype; s…

Pytorch封装简单RNN模型,进行中文训练及文本预测

简述 使用pytorch封装简单RNN模型&#xff0c;使用单层nn.RNN、nn.Linear等实现&#xff0c;然后做简单的文本预测。 数据集 代码参考李沐&#xff1a;https://zh-v2.d2l.ai/chapter_recurrent-neural-networks/rnn-concise.html&#xff0c;但他使用的是一篇英文小说&#…

通配符证书的简介和申请方法

通配符证书是一种SSL证书&#xff0c;它利用域名字段中的通配符&#xff08;*&#xff09;来指示&#xff0c;允许用户在一个证书中关联多个顶级域名及其子域&#xff0c;从而简化证书管理流程&#xff0c;节省成本和时间。以下是通配符证书的简介和申请方法的详细说明&#xf…

Springsecurity中的Eureka报错:Cannot execute request on any known server

完整报错信息&#xff1a; com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错体现&#xff1a; 访问eureka控制面板&#xff1a; 访问测试地址&#xff1a; 控制台报错&#xff1a; 可能的报错原因&#xff…

ZW3D二次开发_UI_ZsCc::OptionRadios控件回调

1.ZW3D中的OptionRadios控件如何实现点击触发回调并且获取点击后的值&#xff1f;如下图 2.教程如下&#xff1a; 1&#xff09;添加OptionRadios控件到表单中 2&#xff09;增加radio按钮 3&#xff09;添加回调 4&#xff09;编写回调函数 int radioCallbackDemo(char* for…

【信息安全】基于CBC的3DES加解密-实验报告

实验运行效果截图 3DES进行加密 3DES进行解密 然后可以选择你想要的操作,继续加密解密或者退出。 基于CBC模式的3DES加解密 一、实验内容 基于3DES加解密算法,编程实现对任意文件实现加解密的软件。 编程实现DES加密和解密算法,并使用DES加解密算法实现3DES加解密算法。选…

Android活动(activity)与服务(service)进行通信

文章目录 Android活动&#xff08;activity&#xff09;与服务&#xff08;service&#xff09;进行通信活动与服务进行通信服务的生命周期 Android活动&#xff08;activity&#xff09;与服务&#xff08;service&#xff09;进行通信 活动与服务进行通信 上一小节中我们学…