apira

1.2.1 • Public • Published

APIra

Простая библиотека для формирования запросов. Является оберткой над axios

Основные возможности:

  • Хуки с интерфейсом middleware из koa (используется koa-compose)
  • Поддержка параметров url (спасибо pathToRegexp), например http://example.ru/users/:id
  • Возможность настройки конфига axios

Примеры

Создание:

import axios from 'axios'
 
const api = new APIra({ adapter: axios.create() })

Отправка запроса:

api
  .url('http://example.ru/users/:id')
  .params({
    id: 10
  })
  .query({
    filter_a: 'a',
    filter_b: 'b'
  })
  .GET()
 
 
api
  .url('http://example.ru/users/:id')
  .params({
    id: 1
  })
  .data({
    someData: 'someData'
  })
  .POST()

Использование хуков:

const logHook = async (ctx, next) => {
  console.log(ctx.response) // response == null
  await next()
  console.log(ctx.response) // response != null
}
 
api
  .hook(logHook)
  .url('http://example.ru/users/:id')
  .params({
    id: 10
  })
  .query({
    filter_a: 'a',
    filter_b: 'b'
  })
  .GET()

Наследование:

const api = new APIra({ adapter: axios.create() })
 
api
  .hook(logHook)
  .options({
    headers: {
      Authorization: 'Bearer SomeToken'
    }
  })
 
const api_v2 = api.extend()

API

APIra

APIra reference

import APIra from 'apira'

constructor

const api = new APIra([config], [hooks], [adapter])

Параметр Тип Описание
config object Настройки axios
hooks function[] Массив хуков
adapter function Инстанс axios (или его mock)

hook

api.hook([hookFn])

Добавляет хук в очередь

Параметр Тип Описание
[hookFn] Function Принимаются только
асинхронные функции

url

api.url(urlPath)

Задает URL, по которому будет выполняться запрос

Параметр Тип Описание
urlPath string URL-адрес

params

api.params([options])

Задает параметры для URL'a.

Параметр Тип Описание
[options] object Объект параметров

Пример объекта параметров для https://example.ru/users/:userId/comments/:commentId:

{
  userId: id,
  commentId: id
}

query

api.query([queryOptions])

Создает из объекта queryString

Параметр Тип Описание
[queryOptions] object Объект query параметров

Пример query-объекта для foo=bar&abc=xyz:

{
  foo: 'bar',
  abc: 'xyz'
}

data

api.data([dataOptions])

Задает тело запроса

Параметр Тип Описание
[dataOptions] object Объект data параметров

Пример data-объекта:

{
  user_id: id
}

options

api.options([options])

Позволяет дополнить дефолтный конфиг axios

Параметр Тип Описание
[options] object Объект axios параметров

Пример объекта axios параметров:

{
  baseURL: '/api/v1/'
}

GET | POST | PUT | DELETE

api
  .url('http://example.ru/users/:id')
  .GET()

Функции вызова соответсвующих методов


inspect

api.inspect()

Возвращает конфиг axios


extend

const api_v2 = api.extend()

Позволяет скопировать инстанс, сохраняя adapter, config и hooks


TODO

  • Оптимизировать сборку

Readme

Keywords

none

Package Sidebar

Install

npm i apira

Weekly Downloads

1

Version

1.2.1

License

none

Unpacked Size

82.8 kB

Total Files

6

Last publish

Collaborators

  • fl0pzz