feat(frontend): 步骤 6.4 — API 客户端封装
This commit is contained in:
62
frontend/src/api/agent.ts
Normal file
62
frontend/src/api/agent.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { API_CONFIG } from "@/config/api-config";
|
||||
import {
|
||||
Response,
|
||||
AiAgentConfigResponseDTO,
|
||||
CreateSessionResponseDTO,
|
||||
ChatRequestDTO,
|
||||
ChatResponseDTO,
|
||||
} from "@/types/api";
|
||||
|
||||
const handleResponse = async <T>(
|
||||
response: globalThis.Response
|
||||
): Promise<Response<T>> => {
|
||||
if (!response.ok) {
|
||||
const errorText = await response.text();
|
||||
throw new Error(`HTTP ${response.status}: ${errorText}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
if (data.code !== "0000") {
|
||||
throw new Error(data.info || "Unknown API error");
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
export const agentApi = {
|
||||
/**
|
||||
* 查询已注册的 AI Agent 列表
|
||||
* GET /api/v1/query_ai_agent_config_list
|
||||
*/
|
||||
queryAgentList: async (): Promise<Response<AiAgentConfigResponseDTO[]>> => {
|
||||
const resp = await fetch(`${API_CONFIG.BASE_URL}/query_ai_agent_config_list`);
|
||||
return handleResponse<AiAgentConfigResponseDTO[]>(resp);
|
||||
},
|
||||
|
||||
/**
|
||||
* 创建聊天会话
|
||||
* POST /api/v1/create_session
|
||||
*/
|
||||
createSession: async (
|
||||
agentId: string,
|
||||
userId: string
|
||||
): Promise<Response<CreateSessionResponseDTO>> => {
|
||||
const resp = await fetch(`${API_CONFIG.BASE_URL}/create_session`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ agentId, userId }),
|
||||
});
|
||||
return handleResponse<CreateSessionResponseDTO>(resp);
|
||||
},
|
||||
|
||||
/**
|
||||
* 发送聊天消息
|
||||
* POST /api/v1/chat
|
||||
*/
|
||||
chat: async (data: ChatRequestDTO): Promise<Response<ChatResponseDTO>> => {
|
||||
const resp = await fetch(`${API_CONFIG.BASE_URL}/chat`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(data),
|
||||
});
|
||||
return handleResponse<ChatResponseDTO>(resp);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user