31 lines
828 B
TypeScript
31 lines
828 B
TypeScript
import type {
|
|
ApiRequestOptions,
|
|
ExampleApi,
|
|
ExampleHealthResponse,
|
|
ExampleWelcomeResponse
|
|
} from '~/types/api'
|
|
|
|
interface CreateExampleApiOptions {
|
|
baseURL: string
|
|
timeoutMs: number
|
|
}
|
|
|
|
export function createExampleApi(options: CreateExampleApiOptions): ExampleApi {
|
|
const request = async <T>(path: string, requestOptions?: ApiRequestOptions) => {
|
|
return await $fetch<T>(path, {
|
|
baseURL: options.baseURL,
|
|
signal: requestOptions?.signal,
|
|
timeout: options.timeoutMs
|
|
})
|
|
}
|
|
|
|
return {
|
|
getHealth(options?: ApiRequestOptions): Promise<ExampleHealthResponse> {
|
|
return request<ExampleHealthResponse>('/health', options)
|
|
},
|
|
getWelcome(options?: ApiRequestOptions): Promise<ExampleWelcomeResponse> {
|
|
return request<ExampleWelcomeResponse>('/welcome', options)
|
|
}
|
|
}
|
|
}
|