Python语言学习笔记之十二(FastAPI)

news2024/12/27 11:26:31

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。

1、认识FastAPI

FastApi,一个用于构建API的现代、快速(高性能)的web框架。它使用Python 3.6+的类型提示并基于标准的Python ASGI工具包

Python  ASGI(Asynchronous Server Gateway Interface) 工具包是一种用于构建异步Web服务器的标准接口,它允许异步和基于事件的系统之间的通信。

ASGI工具包的主要作用是将Web服务器与应用程序之间的通信转换为异步通信,从而提高应用程序的性能和响应速度。

​​​​​​​2、Python ASGI工具包

  1. Hypercom:一个ASGI服务器和WSGI HTTP服务器,它支持HTTP/2和WebSocket, 具有自动重试、请求超时、连接超时、日志记录等功能
  2. Uvicom: 一个ASGI服务器,它支持HTTP/2和WebSocket,具有自动重试、请求超时、连接超时、日志记录等功能
  3. Sanic: 一个Python Web框架,它支持异步请求处理和WebSocket,具有路由、中间件、ORM等功能
  4. Stalette: 一个ASGI服务器和WSGIHTTP服务器,它支持HTTP/2和WebSocket, 具有中间件、路由、异常处理等功能

​​​​​​​3、FastAPI的特点

  1. 快速: FastAPl的性能极高,可与NodeJS和Go等语言相媲美,是Python框架中最快之一
  2. 高效编码: 使用FastAPI能够提高开发功能的速度约200%至300%。同时减少人为错误
  3. 简单: FastAPI易于使用和学习,设计的非常直观,可以帮助开发人员快速上手。
  4. 标准化: FastAPI完全兼容API的开放标准OpenAPI和JSON Schema
  5. 强大的编辑器支持:FastAPI具有强大的编辑器支持,可以帮助开发人员更快地进行调试,处处皆可自动补全,从而减少调试时间
  6. 自动生成的交互式文档: FastAPI可以自动生成交互式文档,使开发人员更容易理解其API
  7. 代码简洁: FastAPl的代码非常简洁,可以帮助开发人员减少代码重复并提高代码质量
  8. 更少的bug: FastAPl可以帮助开发人员减少大约40%的人为错误,提高代码质量和稳定性.
  9. 生产可用级别的代码: FastAPI不仅提供了极高的性能和快速的开发速度,还注重代码的质量和稳定性,具有生产可用级别的代码.

4、如何使用FastAPI

首先,安装fastapi

执行命令: pip install fastapi

对于生产环境,还需要一个ASGl服务器,如Uvicorn或Hypercorn接下来我们需要安装一下Uvicorn

执行命令: pip install “uvicorn[standard]”

接下来要新建一个main.py文件,写一个简单的案例

接下来我们就要在项目文件目录下输人:

uvicorn main:app --reload

main:文件main.py

app:main.py内创建的对象app=FastAPI()

--reload:更改代码后服务器重新启动,仅用于开发

如何使用FastAP

输入: http://127.0.0.1:8000就可以直接看到返回结果;

输人http://127.0.0.1:8000/docs,即可看到交互式文档;

输入http://127.0.0.1:8000/redoc即可看到AP文档

​​​​​​​5、FastAPI进阶应用

使用FastAPI构建一个API接口,然后使用OpenAl的GPT模型提供自然语言处理服务,在课程实践中可以构建一个聊天机器人AP1,这个API接收用户输人的文本,然后通过GPT模型进行处理并返回结果

为了实现这种结合,你需要做的工作包括:

使用FastAPI创建一个API接口,这个接口接收用户输入的文本将用户输入的文本发送给OpenAI的GPT模型进行处理解析GPT模型返回的结果并返回给用户

这样是不是就完成了模型小助手的应用

​​​​​​​​​​​​​​5、总结

FastAPl是一个现代、快速(高性能)的Python web框架,用于构建API它具有简洁性、高效性和友好界面等特点广泛用于电子商务、旅游预订和社交媒体等场景。

FastAPl的实现原理包括代码架构、请求流程和响应机制等方面。它具有高效的性能和简洁的代码风格,同时需要一定的学习曲线和完善的文档,未来,FastAPI可能会更加智能化灵活和安全。作为一个新兴的web框架,FastAPl必将在构建API方面发挥越来越重要的作用。

未来发展方向

随着技术的不断发展和应用场景的不断扩大,FastAPI的未来发展方向可能有以下几个方面:

  1. 更加智能化: FastAP可以结合人工智能技术,实现自动化的数据处理、异常处理和安全防护等功能,提高API的智能化水平
  2. 更加灵活: FastAPI可以进一步扩展其路由匹配、依赖注入等机制,使得开发人员能够更加灵活地构建API接口
  3. 更加安全: FastAPI可以加强安全防护机制,包括HTTPS支持、访问控制、身份验证等方面,提高API的安全性.

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

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

相关文章

二叉树题目:二叉树着色游戏

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树着色游戏 出处:1145. 二叉树着色游戏 难度 6 级 题目描述 要求 两位玩家参与二叉树着色游戏。给定二叉树的根结点 root \textt…

亿发:数据无缝整合,实时洞察业务——深入分析ERP系统的四大业财一体化优势

"业务财务一体化"是企业数字化的核心议题之一。在业务运作过程中,财务记账能够实现自动、实时化。这也是传统企业资源计划(ERP)系统的主要价值,实现业务流、信息流和资金流的无缝整合,同时满足企业对业务风险…

深入解析Spring Boot集成MyBatis的多种方式

文章目录 1. 引言2. 传统的XML配置方式2.1 引入依赖2.2 配置数据源和MyBatis2.3 编写Mapper接口和XML映射文件2.4 使用Mapper 3. 注解配置方式3.1 引入依赖3.2 配置数据源和MyBatis3.3 编写Mapper接口3.4 使用Mapper 4. MyBatis动态SQL4.1 使用XML配置方式4.2 使用注解配置方式…

laravel的安装

laravel的安装(Composer小皮) Composer的安装 windows下安装 https://getcomposer.org/Composer-Setup.exe 修改镜像 阿里云: composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 华为云: compos…

时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解

时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现DBO-VMD基于蜣螂优化算法优化VMD变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.利用蜣螂优化算法优化VMD中的参数k、a&…

带你了解OpenCV4工业缺陷检测的六种方法

文章目录 OpenCV4工业缺陷检测的六种方法机器视觉缺陷检测1. 工业上常见缺陷检测方法方法一:基于简单二值图像分析实现划痕提取,效果如下:方法二:复杂背景下的图像缺陷分析,基于频域增强的方法实现缺陷检测&#xff0c…

【工作流Activiti】Activiti流程操作

1、流程定义 我们定义一个请假流程 1.1、新建模型 1.2、开始节点 1.3、任务节点 1.4、结束节点 1.5、设置节点属性 指定标签名称:张三审批,节点任务负责人:zhangsan 指定标签名称:李四审批,节点任务负责人&#xf…

【稳定检索|投稿优惠】2024年公共服务、健康与医药国际会议(ICPSHM 2024)

2024年公共服务、健康与医药国际会议(ICPSHM 2024) 2024 International Conference on Public Services, Health, and Medicine(ICPSHM) 一、【会议简介】 ​2024年公共服务、健康与医药国际会议(ICPSHM 2024)将于三亚这片美丽的海滨城市盛大召开。我们诚…

【JAVA基础(对象和封装以及构造方法)】----第四天

对象和封装以及构造方法 面向对象和面向过程面向过程面向对象 类与对象及其使用定义类创建一个对象,操作类补充(成员变量和局部变量) private 修饰类 封装练习编写类编写测试输出结果 面向对象和面向过程 面向过程 在了解面向对象之前先来了…

线上BUG引起思考:package.json 中的 ^~ 该保留吗?

一、写在前面 一次线上项目 bug,引发了关于 package.json 中的 ^~ 是否该保留?保留可能引发的后果?以及如何在版本更新便利和版本更稳定中取舍的思考?这个 bug 是由于线上部署打包时,自己下载了最新依赖,于…

如何本地搭建Zblog网站并通过内网穿透将个人博客发布到公网

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站…

12.DHCP

DHCP 用户上网的时候,会从网卡发一个DHCP请求,是一个广播报文255.255.255.255,源地址是0.0.0.0 服务器得到请求后,返回给客户端一个地址 1.在路由器开启DHCP功能 2.配置地址池 3.指明给用户分配的网段…

制造企业MES管理系统可以和AI结合应用吗

在当今的数字化时代,人工智能AI和MES生产管理系统的结合将成为制造企业发展的重要趋势。这种结合可以为制造企业带来许多优势,如提高生产效率、降低成本、优化资源利用等。本文将探讨MES管理系统和AI的结合以及它们在制造企业中的应用,并分析…

Gateway网关-路由的过滤器配置

目录 一、路由过滤器 GatewayFilter 1.1 过滤器工厂GatewayFilterFactory 1.2 案例给所有进入userservice的请求添加一个请求头 Truthitcastis freaking awesome! 1.3 案例给所有请求添加一个请求头 Truthitcastis freaking awesome! 一、路由过滤器 …

鸿海携手Porotech共同开启Micro LED新篇章 | 百能云芯

近日,鸿海集团决定进一步强化其在Micro LED(微发光二极体)技术领域的实力。为此,鸿海宣布将与英国半导体企业Porotech展开战略合作,旨在共同开发MicroLED微显示器,并在AR(扩增实境)应…

Python学习之复习MySQL-Day8(事务)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧!事务简介事务操作模拟转账操作开启事务提交事务回滚事务查看/设置事务提交方法实例演示 事务四大特性并发事务问题分类 事务隔离级别分类查看/设置事务隔离级别实例演示 文章声明⭐⭐⭐ 该文章为我(有编程语…

记录 | C++头文件中 <> 和 ““ 的区别

C 头文件中 <> 和 “” 的区别 #include <cstdio> #include "hello.h"int main(){printf("hello world!");return 0; }● <cstdio> 这种形式表示不要在当前目录下进行搜索&#xff0c;只在系统目录里搜索&#xff1b; ● "hello.h…

【网络安全】-Linux操作系统—操作系统发展历史与Linux

文章目录 操作系统发展历史初期的操作系统分时操作系统个人计算机操作系统 Linux的诞生UNIX与GNU项目Linux内核的创建 Linux的特点开放源代码多样性社区支持 Linux的应用服务器和超级计算机嵌入式系统桌面系统 总结 操作系统发展历史 操作系统&#xff08;Operating System&am…

Linux部署Nacos注册中心结合内网穿透实现远程访问UI管理界面

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik8. 结语 Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a…

电机驱动开发

最近在搞电机驱动程序&#xff0c;感觉很简单&#xff0c;实际操作却发现里面还有很多猫腻&#xff08;细节&#xff09;。 电机在嵌入式设备中非常常见&#xff0c;例如云台的转动&#xff0c;都是靠电机来驱动的。 电机常见分步进电机、直流电机&#xff0c;相对来说步进电机…