Initial commit: 知识库管理器应用
- 实现基于 PySide6 的 GUI 界面 - 集成 FastAPI 知识库服务器 API - 支持查看、编辑、提交 Markdown 文件 - 包含完整的 pytest-qt 测试套件 - 添加功能列表文档
This commit is contained in:
43
api_client.py
Normal file
43
api_client.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import requests
|
||||
from typing import List, Optional
|
||||
|
||||
|
||||
class KnowledgeBaseAPI:
|
||||
def __init__(self, base_url: str):
|
||||
self.base_url = base_url.rstrip('/')
|
||||
|
||||
def get_file_list(self) -> List[str]:
|
||||
"""获取服务器上的文件列表"""
|
||||
try:
|
||||
response = requests.get(f"{self.base_url}/list", timeout=10)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
except requests.RequestException as e:
|
||||
raise Exception(f"获取文件列表失败: {str(e)}")
|
||||
|
||||
def get_file(self, filename: str) -> str:
|
||||
"""获取文件内容"""
|
||||
try:
|
||||
response = requests.get(f"{self.base_url}/{filename}/get", timeout=10)
|
||||
response.raise_for_status()
|
||||
return response.text
|
||||
except requests.RequestException as e:
|
||||
raise Exception(f"获取文件 {filename} 失败: {str(e)}")
|
||||
|
||||
def post_file(self, filename: str, content: str) -> bool:
|
||||
"""上传文件内容"""
|
||||
try:
|
||||
files = {'file': (filename, content, 'text/markdown')}
|
||||
response = requests.post(f"{self.base_url}/{filename}/post", files=files, timeout=10)
|
||||
response.raise_for_status()
|
||||
return True
|
||||
except requests.RequestException as e:
|
||||
raise Exception(f"上传文件 {filename} 失败: {str(e)}")
|
||||
|
||||
def test_connection(self) -> bool:
|
||||
"""测试服务器连接"""
|
||||
try:
|
||||
response = requests.get(f"{self.base_url}/list", timeout=5)
|
||||
return response.status_code == 200
|
||||
except requests.RequestException:
|
||||
return False
|
||||
Reference in New Issue
Block a user