@aspida/fetch
TypeScript icon, indicating that this package has built-in type declarations

1.14.0 • Public • Published

@aspida/fetch


aspida


fetch client for aspida.


Getting Started

Installation

  • Using npm:

    $ npm install aspida @aspida/fetch
  • Using Yarn:

    $ yarn add aspida @aspida/fetch

Make HTTP request from application

src/index.ts

import aspida, { HTTPError } from "@aspida/fetch";
import api from "../api/$api";

const fetchConfig = {
  credentials: "include",
  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 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/fetch is licensed under a MIT License.

Dependents (0)

Package Sidebar

Install

npm i @aspida/fetch

Weekly Downloads

5,407

Version

1.14.0

License

MIT

Unpacked Size

15.6 kB

Total Files

11

Last publish

Collaborators

  • m-mitsuhide
  • solufa