本帖最后由 QwindF 于 2023-11-18 13:26 编辑
1.起因:有个想法,虽然fastapi的主流是用来写api,就是主流的后端运用,传输的数据都是json或其他数据类型的格式。
在查询了一些资料之后,发现fastapi其实也可以返回Html页面,并且可以挂载静态文件目录。
在静态的html中是没有动态数据的,那是不是可以通过上述的方法将静态变为动态,实现一些可视化数据交互。
2.讨论思路:
可以试着先写个登录页面,让后点击登入,发送请求到后端进行校验,返回个token·····
3.补充Fastapi的介绍(来自其他人的blog):
FastAPI 是一个现代、快速(高性能)、基于标准 Python 类型提示的 Web 框架。它是一个用于构建 API(应用程序编程接口)的异步框架,具有许多优秀的特性,使得开发者能够更轻松地构建高性能的 Web 服务。
以下是 FastAPI 的一些主要特性和优点:
-
基于标准的 Python 类型提示: FastAPI 使用 Python 3.7+ 的类型提示,这样可以在编码时提供更好的 IDE 支持,帮助开发者更容易地发现和修复错误。
-
自动生成文档: FastAPI 自动生成交互式文档,这使得 API 更易于理解和使用。文档是基于 OpenAPI 和 JSON Schema 生成的,可以通过浏览器直接访问。
-
快速和高性能: FastAPI 构建在 Starlette 和 Pydantic 上,这两者都是异步(async)的库,从而使得 FastAPI 具有出色的性能。它还支持异步请求处理,能够处理大量并发请求。
-
依赖注入系统: FastAPI 提供了一个强大的依赖注入系统,使得开发者能够更容易地组织和测试代码。
-
自动验证和序列化: 使用 Pydantic 模型,FastAPI 可以自动验证请求数据和序列化响应数据,减少了手动处理输入输出的工作量。
-
WebSocket 支持: FastAPI 不仅支持传统的 HTTP 请求,还支持 WebSocket,这使得构建实时应用程序变得更加容易。
-
安全性: FastAPI 集成了一些安全性功能,包括自动处理请求验证和防范常见的安全漏洞,例如 SQL 注入、跨站点脚本(XSS)等。
一个简单的 FastAPI 示例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
这个示例定义了两个简单的 API 路由,一个用于根路径 ("/"),另一个用于接受带有路径参数和查询参数的请求 ("/items/{item_id}")。 FastAPI 会自动生成交互式文档,使得我们可以轻松地了解和测试这些 API 端点。在生产环境的时候记得禁用文档功能!!
|