Python高性能web框架–Fastapi快速入门

Python高性能web框架–Fastapi快速入门fastapi 是建立在 Starlette 和 Pydantic 基础上的 Pydantic 是一个基于 Python 类型提示来定义数据验证 序列化和文档的库

大家好,欢迎来到IT知识分享网。

在这里插入图片描述

文章目录

fastapi框架

Fastapi,一个用于构建 API 的现代、快速(高性能)的web框架。

  • 快速:可与 NodeJS 和 Go 比肩的极高性能(归功于 Starlette 和 Pydantic),是最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。
  • 更少bug:减少约 40% 的人为(开发者)导致错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。

Pydantic使用来处理数据的,它可以将前端传来的数据转换成之前定义好的类里面的数据类型

案例:

from datetime import datetime from pydantic import BaseModel, PositiveInt #构造数据模型 class User(BaseModel): #类型声明 id: int name: str = 'John Doe' #相当于有默认值的,John Doe signup_ts: datetime | None tastes: dict[str, PositiveInt] #模拟前端传给后端的数据 external_data = { 
    'id': '123', 'signup_ts': '2019-06-01 12:22', 'tastes': { 
    'wine': 9, b'cheese': 7, 'cabbage': '1', }, } #BaseModel类的强大之处在于,可以将数据进行转换,转换成类里面声明的相关数据类型 user = User(external_data) print(user.id) #> 123 print(user.model_dump()) 

一、预备知识点

1.1、http协议

  1. 什么是请求头请求体,响应头响应体
  2. URL地址包括什么
  3. get请求和post请求到底是什么
  4. Content-Type是什么
(1)简介
(2) http协议特性

(1) 基于TCP/IP协议

http协议是基于TCP/IP协议之上的应用层协议。

(2) 基于请求-响应模式

HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应

(3) 无状态保存

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议 自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个 级别,协议对于发送过的请求或响应都不做持久化处理。

使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成 如此简单的。

(4) 短连接

(3)http请求协议与响应协议

在这里插入图片描述

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=. POST方法是把提交的数据放在HTTP包的请求体中.
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制
    响应状态码:状态码的职 是当客户端向服务器端发送请求时, 返回的请求 结果。借助状态码,用户可以知道服务器端是正常 理了请求,还是出 现了 。状态码如200 OK,以3位数字和原因 组成。

1.2、api接口

在开发Web应用中,有两种应用模式:

  1. 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。]
    在这里插入图片描述

我们使用socket,来创建一个web应用程序

import socket sock = socket.socket() sock.bind(('127.0.0.1',8080)) sock.listen(128) while True: con,addr = sock.accept() #阻塞等待客户端连接 data = con.recv(1024) print('客户端发来的信息',data) con.send(b'HTTP/1.1 200 ok\r\nserver:jingtian\r\ncontent-type:application/json\r\n\r\n{serverdata:hello,world}') con.close() 

但是,我们每次如果都手动写请求,响应,那对开发来说将显得非常麻烦,因此我们迫切需要web开发框架来简化我们得开发步骤。

  1. 前后端分离【把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可)】
    前端形成一个独立的网站,服务端构成一个独立的网站
    在这里插入图片描述

restful规范是一种通用的规范,不限制语言和开发框架的使用。事实上,我们可以使用任何一门语言,任何一个框架都可以实现符合restful规范的API接口。

二、quick start

1、简单案例

安装

from fastapi import FastAPI # FastAPI 是一个为你的 API 提供了所有功能的 Python 类。

app = FastAPI() # 这个实例将是创建你所有 API 的主要交互对象。这个 app 同样在如下命令中被 uvicorn 所引用

也可以直接运行:

if __name__ == '__main__': #注意,run的第一个参数 必须是文件名:应用程序名 uvicorn.run("quickstart:app", port=8080, reload=True) 

实战:

from fastapi import FastAPI # FastAPI 是一个为你的 API 提供了所有功能的 Python 类。 import uvicorn #创建应用程序,app是应用程序名 app = FastAPI() # 这个实例将是创建你所有 API 的主要交互对象。这个 app 同样在如下命令中被 uvicorn 所引用 #异步的请求参数,函数加上async。针对什么路由,就写上什么路径 @app.get("/") async def home(): return { 
   "user_id": 1002} @app.get("/shop") async def shop(): return { 
   "shop": "商品信息"} if __name__ == '__main__': #注意,run的第一个参数 必须是文件名:应用程序名 uvicorn.run("quickstart:app", port=8080, reload=True) 

2、交互API文档

fastapi有着非常棒的交互式 API 文档,这一点很吸引人。

你将会看到自动生成的交互式 API 文档。

3、Fastapi开发web程序流程总结

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114575.html

(0)
上一篇 2025-12-08 09:33
下一篇 2025-12-08 10:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信