FastApi+WebSocket 解析

FastAPI 比较简单,就是加一个路由装饰器就可以运行函数了,一般来说是结合async来进行异步编程,同时结合websocket来使用。

特点

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,特别适合于构建微服务。它基于标准 Python 类型提示,这使得它的一大特点是自动数据验证和自动生成 API 文档(包括 Swagger 和 ReDoc)。FastAPI 支持异步编程,允许开发者利用异步和等待关键字来编写非阻塞代码,从而提高性能。它的设计简洁且易于扩展,在开发高性能应用程序时特别有用。FastAPI 没有提供自带的数据库系统或前端组件,它专注于 API 的快速开发和运行效率。

运行

安装:


安装 
pip install fastapi
安装部署包
pip install uvicorn

main.py:

from fastapi import FastAPI

app = FastAPI()
# 用来创建一个 FastAPI 应用的实例。这个实例作为你构建 API 的基础,
#会通过它来定义路由、中间件、事件处理器等。
#每个 FastAPI 应用都需要至少一个这样的实例,以便启动和运行服务。这是设置你的 API 服务器的起点,后续的所有操作(如添加路由、请求处理函数等)都将基于这个实例进行配置。


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

运行命令:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload
main: 表示app所在文件名
app:FastAPI实例
reload:debug模式,可以自动重启

访问查看API 文档

交互文档
http://127.0.0.1:8000/docs
http://127.0.0.1:8000/redoc
返回接口文档

路径装饰器:

@app.get("/")
'''
@app.get("/") 告诉 FastAPI 在它下方的函数负责处理如下访问请求:

请求路径为 /
使用 get 操作
你也可以使用其他的操作:
    @app.post()
    @app.put()
    @app.delete()
    以及更少见的:
    @app.options()
    @app.head()
    @app.patch()
    @app.trace()
这些对应都是请求方式 '''

将特定的函数绑定到对根 URL(“/”)的 HTTP GET 请求。这意味着当 FastAPI 应用接收到一个指向根 URL 的 GET 请求时,它会执行这个装饰器下方定义的函数。

@app.get("/print")
def print_demo()
### 如何在 FastAPI 中实现 WSS (WebSocket Secure) 连接 为了实现在 FastAPI 框架中的安全 WebSocket(WSS)连接,需要配置 HTTPS 和相应的 WebSocket 设置。HTTPS 是通过 SSL/TLS 协议来加密 HTTP 流量,而 WSS 则是在 WebSocket 上应用相同的加密机制。 #### 安装必要的包 首先安装 `uvicorn` 并启用 Gunicorn 的 gevent worker 类型用于处理异步请求: ```bash pip install fastapi uvicorn[standard] ``` 对于生产环境部署来说,建议使用带有 SSL 支持的反向代理服务器如 Nginx 或者直接让 Uvicorn 使用自签名证书或正式 CA 颁发的证书启动服务[^1]。 #### 创建 FastAPI 应用并集成 WebSocket 下面是一个简单的 FastAPI 应用程序示例,它集成了 WebSocket 功能,并启用了 WSS: ```python from fastapi import FastAPI, WebSocket, WebSocketDisconnect import ssl app = FastAPI() @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() try: while True: data = await websocket.receive_text() await websocket.send_text(f"Message text was: {data}") except WebSocketDisconnect: pass if __name__ == "__main__": import uvicorn context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) context.load_cert_chain('path/to/certfile', keyfile='path/to/keyfile') config = { "app": "your_module_name:app", "host": "0.0.0.0", "port": 443, "ssl_keyfile": "path/to/keyfile", "ssl_certfile": "path/to/certfile" } uvicorn.run(**config) ``` 这段代码展示了如何创建一个基本的 WebSocket 终端点 `/ws` ,并通过指定路径加载 SSL 证书和私钥文件来开启 WSS 支持。 请注意,在实际项目中应该妥善保管这些敏感信息而不是硬编码到源码里;另外还需要考虑防火墙设置以及域名解析等问题以确保外部可以访问此接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值