Skip to main content
Glama
base.ts2.15 kB
import { createAlova } from 'alova' import adapterFetch from 'alova/fetch' import ReactHook from 'alova/react' import { logger } from '@/utils/logger' // Create alova instance export const createAlovaInstance = (baseURL: string) => { const instance = createAlova({ // Request adapter requestAdapter: adapterFetch(), // State hook for React statesHook: ReactHook, // Base URL baseURL, // Global request configuration beforeRequest(method) { // Set default headers method.config.headers = { 'Content-Type': 'application/json', ...method.config.headers, } // Log request for debugging logger.info(`[API Request] ${method.type.toUpperCase()} ${method.url}`) }, // Global response interceptor responded: { // Success response handler onSuccess: async (response, method) => { logger.info( `[API Response] ${method.type.toUpperCase()} ${method.url} - ${response.status}` ) // Check if response is ok if (!response.ok) { throw new Error(`HTTP Error: ${response.status} ${response.statusText}`) } // Parse JSON response const data = await response.json() return data }, // Error response handler onError: (error, method) => { logger.error(`[API Error] ${method.type.toUpperCase()} ${method.url}:`, error) // Handle different types of errors if (error instanceof TypeError && error.message.includes('fetch')) { // Network error throw new Error( 'Network connection failed. Please check if the backend server is running.' ) } if (error.message.includes('HTTP Error: 404')) { throw new Error('API endpoint not found.') } if (error.message.includes('HTTP Error: 500')) { throw new Error('Internal server error. Please try again later.') } // Re-throw the original error throw error }, }, cacheFor: null, // Global timeout (30 seconds) timeout: 30000, }) return instance }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/itcook/graphiti-mcp-pro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server