@nero-ui/http
v1.0.0-alpha.0
Published
Client Http for nero ui
Downloads
5
Readme
@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).
✨ Fitur
- 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
🚀 Instalasi
npm install @nero-ui/http
# atau
yarn add @nero-ui/http🔧 Penggunaan
Basic GET request
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);
}POST request dengan body
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);
}Menambahkan Bearer Token & Headers
const getProfile = http.get<{ id: number; name: string }>(
"https://api.example.com/profile",
{ bearerToken: "your-jwt-token" },
);
const profile = await getProfile();Menggunakan params & meta params
const getUsers = http.get("https://api.example.com/users", {
params: { status: "active" },
metaParams: { page: 1, perPage: 10 },
});
const users = await getUsers();⚙️ API Options
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<string,string | number> | Query params |
| metaParams | MetaParams | Query meta (pagination, search, dsb.) | |
| withAppAuth | boolean | Default true, opsional untuk otorisasi app | |
| responseContentType | "json" \| "text" \| "blob" | Format response | |
📦 Contoh Response
Tipe standar response API dapat mengikuti:
interface ApiResponse<T> {
status?: string;
message?: string;
data?: T;
meta?: {
currentPage: number;
perPage: number;
totalPage: number;
totalData: number;
};
error?: {
code: string;
message: string;
};
}⚡ Advanced Usage
Dynamic Option (misalnya untuk inject token dari async storage)
Kamu bisa menggunakan fungsi async untuk mengembalikan RequestApiOptions. Contohnya:
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.
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
});