You've already forked DataMate
feat(annotation): 优化知识同步服务的响应处理
- 在HTTP请求后添加响应解包功能 - 实现_code_方法来处理API响应格式 - 添加错误码检查和异常抛出机制 - 提取数据字段并返回正确的内容结构 - 保持原有安全JSON序列化功能不变
This commit is contained in:
@@ -349,7 +349,8 @@ class KnowledgeSyncService:
|
||||
response = await client.request(method, url, **kwargs)
|
||||
response.raise_for_status()
|
||||
if response.content:
|
||||
return response.json()
|
||||
payload = response.json()
|
||||
return self._unwrap_response(payload, response)
|
||||
return None
|
||||
|
||||
def _safe_json_dumps(self, payload: Any) -> str:
|
||||
@@ -363,3 +364,17 @@ class KnowledgeSyncService:
|
||||
return response.text
|
||||
except Exception:
|
||||
return ""
|
||||
|
||||
def _unwrap_response(self, payload: Any, response: httpx.Response) -> Any:
|
||||
if not isinstance(payload, dict):
|
||||
return payload
|
||||
if "code" not in payload or "data" not in payload:
|
||||
return payload
|
||||
code = str(payload.get("code"))
|
||||
if code != "0":
|
||||
raise httpx.HTTPStatusError(
|
||||
f"响应返回错误 code={code} message={payload.get('message')}",
|
||||
request=response.request,
|
||||
response=response,
|
||||
)
|
||||
return payload.get("data")
|
||||
|
||||
Reference in New Issue
Block a user