feat: network 패키지 추가

This commit is contained in:
2025-03-06 19:34:28 +09:00
parent b08561fe29
commit 98a3f3c4b7
4 changed files with 92 additions and 0 deletions
+67
View File
@@ -0,0 +1,67 @@
import axios from "axios";
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from "axios";
interface ClientConfig {
baseURL: string;
siteId: string;
}
class Client {
private static instance: Client;
private axiosInstance: AxiosInstance;
private constructor(config: ClientConfig) {
this.axiosInstance = axios.create({
baseURL: config.baseURL,
headers: {
"Content-Type": "application/json",
"X-Site-Id": config.siteId,
},
withCredentials: true,
});
}
public static getInstance(config: ClientConfig): Client {
if (!Client.instance) {
Client.instance = new Client(config);
}
return Client.instance;
}
public async get<T = unknown, R = AxiosResponse<T>>(
url: string,
config?: AxiosRequestConfig
): Promise<R> {
const response = await this.axiosInstance.get<T, R>(url, config);
return response;
}
public async post<T = unknown, R = AxiosResponse<T>, D = unknown>(
url: string,
data?: D,
config?: AxiosRequestConfig<D>
): Promise<R> {
const response = await this.axiosInstance.post<T, R>(url, data, config);
return response;
}
public async put<T = unknown, R = AxiosResponse<T>, D = unknown>(
url: string,
data?: D,
config?: AxiosRequestConfig<D>
): Promise<R> {
const response = await this.axiosInstance.put<T, R>(url, data, config);
return response;
}
public async delete<T = unknown, R = AxiosResponse<T>>(
url: string,
config?: AxiosRequestConfig
): Promise<R> {
const response = await this.axiosInstance.delete<T, R>(url, config);
return response;
}
}
export type { ClientConfig };
export { Client };
+1
View File
@@ -0,0 +1 @@
export * from "./client";
+17
View File
@@ -0,0 +1,17 @@
{
"name": "@common/network",
"version": "0.0.0",
"private": true,
"main": "./index.ts",
"types": "./index.ts",
"exports": {
".": "./index.ts"
},
"dependencies": {
"axios": "^1.8.1"
},
"devDependencies": {
"@types/node": "^20.11.19",
"typescript": "^5.3.3"
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"compilerOptions": {
"baseUrl": "."
},
"include": ["."],
"exclude": ["node_modules", "dist"]
}