@softimist/api
v1.0.2
Published
Shared API types and base client for Edushade monorepo packages.
Readme
@softimist/api
Shared API types and base client for Edushade monorepo packages.
Usage
Extending BaseApiClient
The BaseApiClient class uses axios internally and provides a foundation for module-specific API clients. Simply extend it and add your module-specific methods:
import { BaseApiClient, type BaseApiClientConfig, type ServerResponse } from '@softimist/api';
interface WebsiteApiClientConfig extends BaseApiClientConfig {
// Add module-specific config if needed
}
class WebsiteApiClient extends BaseApiClient {
constructor(config: WebsiteApiClientConfig) {
super(config);
// BaseApiClient already handles axios setup, auth interceptors, and error handling
}
// Add module-specific methods
async getPages() {
return this.get<Page[]>('/api/v1/website/pages');
}
async getPageById(id: string) {
return this.get<Page>(`/api/v1/website/pages/${id}`);
}
async createPage(data: CreatePageDto) {
return this.post<Page>('/api/v1/website/pages', data);
}
async updatePage(id: string, data: UpdatePageDto) {
return this.patch<Page>(`/api/v1/website/pages/${id}`, data);
}
async deletePage(id: string) {
return this.delete<void>(`/api/v1/website/pages/${id}`);
}
}
// Usage
const client = new WebsiteApiClient({
baseURL: 'https://api.example.com',
getAuthToken: () => localStorage.getItem('token'),
});
const pages = await client.getPages();Using Types
Import types for use in your modules:
import type {
HttpClient,
ServerResponse,
ServerPaginatedResponse,
UsePaginatedApiReturn,
PaginationMeta,
} from '@softimist/api';