跳转到内容

搜索仅适用于生产版本。 尝试构建并预览网站以在本地测试。

AI 掘金头条小项目

把每个业务功能的接口拆分到独立的文件当中,再统一挂载到主应用中。

router = APIRouter(prefix="/api/news", tags=["news"])

cors是一种浏览器安全机制,用于运行在一个源的web应用,通过浏览器向另一个源的服务器发起跨域HTTP请求,并在服务器授权的前提下获取资源。(浏览器的安全机制,只允许同源请求)

同源的三个条件:协议、域名、端口

服务端全局配置CORS中间件,解决跨域问题。

验证用户是否登录

Token是服务器发给客户端的一段字符串,用来在后续请求中证明已经登录过了,解决HTTP是无状态的问题,在每次请求中 自我证明身份

在请求中的位置是请求头:Authorization: Bearer <token>

Authorization: 专门用来放身份信息 Bearer: 表示持有者令牌 < Token>: 真正的身份凭证

passlib 哈希加密

CryptContext(schemes=[“bacrpt])

抽取响应结果:

在fastapi中通常在应用层使用redis内存数据存储器作为缓存。

配置

import redis.asyncio as redis
REDIS_HOST = "203.0.113.10" #主机地址
REDIS_PORT = 6379 # 端口
REDIS_DB = 0 #数据库编号 0~15
# decode_responses 字符串转码
redis_client = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB, decode_responses=True)

封装缓存操作

围绕redis做 存、取、删、判断、过期 等操作,让数据访问更快、数据库压力更小

redis存储 key - value

setex、get、delete、exists

旁路缓存策略:一种常见的缓存策略。核心概念是应用程序主动管理缓存,读取数据时先检查缓存,若缓存没数据则从数据库或其他数据源加载数据,并将数据存入缓存,当数据更新或删除时,也更新缓存数据

缓存时间的设定规则:分类、配置 7200 列表 600 详情1800 验证码 120 数据越稳定,缓存越持久。 避免缓存全部一致,导致缓存雪崩。同一时刻缓存全都没有,导致数据库压力仍然很大。

缓存key 需要保持唯一性