Client Http for nero ui
npm install @nero-ui/http@nero-ui/http adalah library HTTP client ringan berbasis fetch dengan API sederhana dan fleksibel.
Dirancang untuk digunakan di aplikasi JavaScript/TypeScript (Node.js maupun browser).
- Mendukung method: GET, POST, PUT, PATCH, DELETE
- Penanganan Bearer Token & custom headers
- Dukungan params & meta params (pagination, filter, dsb.)
- Dukungan content-type: JSON, URL-encoded, Form Data
- Mendukung response type: json, text, blob
- Fully typed dengan TypeScript
---
``bash`
npm install @nero-ui/httpatau
yarn add @nero-ui/http
`ts
import { http } from "@nero-ui/http";
async function main() {
const users = await http.get<{ id: number; name: string }[]>(
"https://api.example.com/users",
)();
console.log(users);
}
`
`ts
import { http } from "@nero-ui/http";
async function main() {
const newUser = await http.post<{ id: number }, { name: string }>(
"https://api.example.com/users",
)({ name: "Rizki" });
console.log(newUser);
}
`
`ts
const getProfile = http.get<{ id: number; name: string }>(
"https://api.example.com/profile",
{ bearerToken: "your-jwt-token" },
);
const profile = await getProfile();
`
`ts
const getUsers = http.get("https://api.example.com/users", {
params: { status: "active" },
metaParams: { page: 1, perPage: 10 },
});
const users = await getUsers();
`
Tipe RequestApiOptions mendukung:
| Opsi | Tipe | Deskripsi | |
| --------------------- | ---------------------------------------- | -------------------------------------------- | ------------ |
| bearerToken | string | Token otentikasi Bearer | |contentType
| | "json" \| "form-data" \| "url-encoded" | Content-Type request | |headers
| | HeadersInit | Custom headers tambahan | |signal
| | AbortSignal | Abort fetch request | |path
| | string | Path tambahan untuk endpoint | |params
| | Record | Query params |metaParams
| | MetaParams | Query meta (pagination, search, dsb.) | |withAppAuth
| | boolean | Default true, opsional untuk otorisasi app | |responseContentType
| | "json" \| "text" \| "blob" | Format response | |
Tipe standar response API dapat mengikuti:
`ts`
interface ApiResponse
status?: string;
message?: string;
data?: T;
meta?: {
currentPage: number;
perPage: number;
totalPage: number;
totalData: number;
};
error?: {
code: string;
message: string;
};
}
Dynamic Option (misalnya untuk inject token dari async storage)
Kamu bisa menggunakan fungsi async untuk mengembalikan RequestApiOptions.
Contohnya:
`ts
import { http } from "@nero-ui/http";
// Fungsi async untuk ambil token dari penyimpanan
async function getAuthOptions() {
const token = await Promise.resolve(localStorage.getItem("access_token"));
return {
bearerToken: token ?? "",
headers: {
"X-App-Version": "1.0.0",
},
};
}
// Gunakan di request
const getProfile = http.get<{ id: number; name: string }>(
"https://api.example.com/profile",
getAuthOptions, // <--- fungsi, bukan objek statis
);
async function main() {
const profile = await getProfile();
console.log(profile);
}
`
Override options per request
Selain opsi default, kamu bisa menimpa options per request.
`ts
const getUsers = http.get("https://api.example.com/users", getAuthOptions);
// Panggil API dengan opsi tambahan
const users = await getUsers({
params: { status: "inactive" }, // override query param
responseContentType: "text", // override response type
});
``