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 = await client.request(method, url, **kwargs)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
if response.content:
|
if response.content:
|
||||||
return response.json()
|
payload = response.json()
|
||||||
|
return self._unwrap_response(payload, response)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _safe_json_dumps(self, payload: Any) -> str:
|
def _safe_json_dumps(self, payload: Any) -> str:
|
||||||
@@ -363,3 +364,17 @@ class KnowledgeSyncService:
|
|||||||
return response.text
|
return response.text
|
||||||
except Exception:
|
except Exception:
|
||||||
return ""
|
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