20260518更新

This commit is contained in:
liubiren 2026-05-18 22:00:42 +08:00
parent 6c273059d0
commit 48db31f634
3 changed files with 35 additions and 15 deletions

View File

@ -28,10 +28,10 @@ class Parameters(BaseModel):
params: Optional[Dict[str, Any]] = Field(default=None, description="查询参数") params: Optional[Dict[str, Any]] = Field(default=None, description="查询参数")
headers: Optional[Dict[str, Any]] = Field(default=None, description="请求头") headers: Optional[Dict[str, Any]] = Field(default=None, description="请求头")
data: Optional[Union[str, bytes, Dict[str, Any]]] = Field( data: Optional[Union[str, bytes, Dict[str, Any]]] = Field(
default=None, description="数据参数" default=None, description="data 数据"
) )
json_: Optional[Dict[str, Any]] = Field( json_: Optional[Dict[str, Any]] = Field(
default=None, alias="json", description="JSON " default=None, alias="json", description="JSON "
) )
files: Optional[ files: Optional[
Dict[ Dict[
@ -44,22 +44,27 @@ class Parameters(BaseModel):
] ]
] = Field( ] = Field(
default=None, default=None,
description="文件上传参数", description="上传文件",
)
encryption_strategy: Optional[Literal["rsa-aes-gcm"]] = Field(
default=None, description="加密策略,默认为不加密"
)
stream: Optional[bool] = Field(
default=None, description="开启流式传输,默认为不开启"
) )
stream: Optional[bool] = Field(default=None, description="开启流式传输")
guid: Optional[str] = Field(default=None, description="缓存全局唯一标识") guid: Optional[str] = Field(default=None, description="缓存全局唯一标识")
@model_validator(mode="after") @model_validator(mode="after")
def validate_data(self): def validate_data(self):
"""校验:表单参数和JSON参数互斥""" """校验:data 数据和JSON数据互斥"""
if self.data and self.json_: if self.data and self.json_:
raise ValueError("表单参数和 JSON 参数不能同时使用") raise ValueError("data 数据和 JSON 数据不能同时使用")
return self return self
@model_validator(mode="after") @model_validator(mode="after")
def validate_files(self): def validate_files(self):
if self.files and self.stream: if self.files and self.stream:
raise ValueError("文件上传参数和开启流式传输不能同时使用") raise ValueError("上传文件和开启流式传输不能同时使用")
return self return self
@ -181,6 +186,7 @@ class Request:
total: int = 3, total: int = 3,
backoff_factor: float = 0.5, backoff_factor: float = 0.5,
timeout: int = 60, timeout: int = 60,
encryption_strategy: Optional[Literal["rsa-aes-gcm"]] = None,
cache_enabled: bool = False, cache_enabled: bool = False,
cache_ttl: int = 360, cache_ttl: int = 360,
): ):
@ -189,6 +195,7 @@ class Request:
:param total: 最大重试次数默认 3 :param total: 最大重试次数默认 3
:param backoff_factor: 重试间隔退避因子默认 0.5 :param backoff_factor: 重试间隔退避因子默认 0.5
:param timeout: 超时时间单位为秒默认为 60 :param timeout: 超时时间单位为秒默认为 60
:param encryption_strategy: 加密策略默认为不加密
:param cache_enabled: 使用缓存默认 False :param cache_enabled: 使用缓存默认 False
:param cache_ttl: 缓存生存时间单位为天默认为 360 :param cache_ttl: 缓存生存时间单位为天默认为 360
""" """
@ -199,6 +206,9 @@ class Request:
# 初始化超时时间 # 初始化超时时间
self.timeout = timeout self.timeout = timeout
# 初始化加密策略
self.encryption_strategy = encryption_strategy
# 实例化缓存 # 实例化缓存
self.caches = Caches(cache_ttl=cache_ttl * 86400) if cache_enabled else None self.caches = Caches(cache_ttl=cache_ttl * 86400) if cache_enabled else None
@ -245,15 +255,15 @@ class Request:
def get(self, **kwargs) -> Any: def get(self, **kwargs) -> Any:
""" """
GET请求 GET请求
:param kwargs: 请求参数 :param kwargs: 请求参数模型
:return: 响应内容 :return: 响应内容
""" """
return self._request(method="GET", parameters=Parameters(**kwargs)) return self._request(method="GET", parameters=Parameters(**kwargs))
def put(self, **kwargs) -> Any: def put(self, **kwargs) -> Any:
""" """
GET请求 PUT请求
:param kwargs: 请求参数 :param kwargs: 请求参数模型
:return: 响应内容 :return: 响应内容
""" """
return self._request(method="PUT", parameters=Parameters(**kwargs)) return self._request(method="PUT", parameters=Parameters(**kwargs))
@ -261,10 +271,10 @@ class Request:
def post(self, **kwargs) -> Any: def post(self, **kwargs) -> Any:
""" """
POST请求 POST请求
:param kwargs: 请求参数 :param kwargs: 请求参数模型
:return: 响应内容 :return: 响应内容
""" """
# 若表单参数和 JSON 参数同时为空则重构 JSON 参数 # 若 data 数据和 JSON 数据同时为空则重构 JSON 数据
if not kwargs.get("data") and not kwargs.get("json"): if not kwargs.get("data") and not kwargs.get("json"):
kwargs["json"] = {} kwargs["json"] = {}
@ -383,10 +393,10 @@ class Request:
) )
# 根据响应类型匹配响应内容解析方法并返回 # 根据响应类型匹配响应内容解析方法并返回
match response_type: match response_type:
# 若为JSON则反序列化 # 若为 JSON 格式则反序列化
case "application/json" | "text/json": case "application/json" | "text/json":
return response.json() return response.json()
# 若为XML解析为Element对象 # 若为 XML 格式则解析为 ElementTree 对象
case "application/xml" | "text/xml": case "application/xml" | "text/xml":
return ElementTree.fromstring(content) return ElementTree.fromstring(content)
# 若为影像件格式则返回影像件格式和响应内容 # 若为影像件格式则返回影像件格式和响应内容

View File

@ -1,6 +1,6 @@
--- ---
name: "requirements-analysis" name: "requirements-analysis"
description: "资深需求分析师,擅长通过提问梳理业务需求,区分单/多项需求场景完成需求分析支持史诗需求拆解、优先级排序、干系人梳理和验收标准制定最终输出规范化的产品需求文档PRD。" description: "资深需求分析师,擅长通过提问完成业务需求分析支持史诗需求拆解、优先级排序、干系人梳理和验收标准制定最终输出规范化的产品需求文档PRD。"
--- ---
# 资深需求分析师 # 资深需求分析师

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
"""
主运行模块
"""
# 列举导入模块
import uvicorn
def request():
pass