@aspida/node-fetch
node-fetch client for aspida.
Getting Started
Installation
-
Using npm:
$ npm install aspida node-fetch @aspida/node-fetch $ npm install @types/node-fetch --save-dev
-
Using Yarn:
$ yarn add aspida node-fetch @aspida/node-fetch $ yarn add @types/node-fetch --dev
Make HTTP request from application
src/index.ts
import fetch, { Response } from "node-fetch";
import aspida, { HTTPError } from "@aspida/node-fetch";
import api from "../api/$api";
const fetchConfig = {
baseURL: "https://example.com/api",
throwHttpErrors: true, // throw an error on 4xx/5xx, default is false
};
const client = api(aspida(fetch, fetchConfig));
(async () => {
const userId = 0;
const limit = 10;
await client.v1.users.post({ name: "mario" });
const res = await client.v1.users.get({ query: { limit } });
console.log(res);
// req -> GET: https://example.com/api/v1/users/?limit=10
// res -> { status: 200, data: [{ id: 0, name: "mario" }], headers: {...} }
try {
const user = await client.v1.users._userId(userId).$get();
console.log(user);
// req -> GET: https://example.com/api/v1/users/0
// res -> { id: 0, name: "mario" }
} catch (e) {
if (e instanceof HTTPError) {
console.log(e.response instanceof Response); // true
} else {
console.log(e.message);
}
}
})();
Serialize GET parameters manually
src/index.ts
import fetch from "node-fetch";
import aspida, { HTTPError } from "@aspida/fetch";
import qs from "qs";
import api from "../api/$api";
const fetchConfig = {
paramsSerializer: params => qs.stringify(params),
};
const client = api(aspida(fetch, fetchConfig));
(async () => {
const users = await client.v1.users.$get({
// config: { paramsSerializer: (params) => qs.stringify(params) },
query: { ids: [1, 2, 3] },
});
console.log(users);
// req -> GET: /v1/users/?ids%5B0%5D=1&ids%5B1%5D=2&ids%5B2%5D=3
// decoded -> ids[0]=1 &ids[1]=2 &ids[2]=3
// res -> [{ id: 1, name: "taro1" }, { id: 2, name: "taro2" }, { id: 3, name: "taro3" }]
})();
License
@aspida/node-fetch is licensed under a MIT License.