大家好,欢迎来到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协议
- 什么是请求头请求体,响应头响应体
- URL地址包括什么
- get请求和post请求到底是什么
- 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应用中,有两种应用模式:
- 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。]
我们使用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开发框架来简化我们得开发步骤。
- 前后端分离【把前端的界面效果(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



