import { API_RESPONSE_ENVELOPE_HEADER, API_RESPONSE_ENVELOPE_VERSION, appendApiErrorRequestId, parseApiErrorMessage, unwrapApiResponse, } from '../../../packages/shared/src/http'; export async function fetchJson( url: string, fallbackMessage = '请求失败', ): Promise { const response = await fetch(url, { headers: { [API_RESPONSE_ENVELOPE_HEADER]: API_RESPONSE_ENVELOPE_VERSION, }, }); const responseText = await response.text(); if (!response.ok) { throw new Error( appendApiErrorRequestId( parseApiErrorMessage( responseText, `${fallbackMessage}: ${response.status}`, ), response.headers.get('x-request-id'), ), ); } return responseText ? unwrapApiResponse(JSON.parse(responseText) as T) : ({} as T); } export async function saveJsonObject( url: string, payload: Record, fallbackMessage = '保存失败', ) { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', [API_RESPONSE_ENVELOPE_HEADER]: API_RESPONSE_ENVELOPE_VERSION, }, body: JSON.stringify(payload, null, 2), }); const responseText = await response.text(); if (!response.ok) { throw new Error( appendApiErrorRequestId( parseApiErrorMessage(responseText, fallbackMessage), response.headers.get('x-request-id'), ), ); } } export { appendApiErrorRequestId, parseApiErrorMessage };