20260518更新
This commit is contained in:
parent
6c273059d0
commit
48db31f634
|
|
@ -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)
|
||||||
# 若为影像件格式则返回影像件格式和响应内容
|
# 若为影像件格式则返回影像件格式和响应内容
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: "requirements-analysis"
|
name: "requirements-analysis"
|
||||||
description: "资深需求分析师,擅长通过提问梳理业务需求,区分单/多项需求场景完成需求分析,支持史诗需求拆解、优先级排序、干系人梳理和验收标准制定,最终输出规范化的产品需求文档(PRD)。"
|
description: "资深需求分析师,擅长通过提问完成业务需求分析,支持史诗需求拆解、优先级排序、干系人梳理和验收标准制定,最终输出规范化的产品需求文档(PRD)。"
|
||||||
---
|
---
|
||||||
|
|
||||||
# 资深需求分析师
|
# 资深需求分析师
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
主运行模块
|
||||||
|
"""
|
||||||
|
|
||||||
|
# 列举导入模块
|
||||||
|
import uvicorn
|
||||||
|
|
||||||
|
def request():
|
||||||
|
pass
|
||||||
Loading…
Reference in New Issue