1.2.1 • Published 5 years ago

apira v1.2.1

Weekly downloads
25
License
-
Repository
-
Last release
5 years ago

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])

ПараметрТипОписание
configobjectНастройки axios
hooksfunction[]Массив хуков
adapterfunctionИнстанс axios (или его mock)

hook

api.hook([hookFn])

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

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

url

api.url(urlPath)

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

ПараметрТипОписание
urlPathstringURL-адрес

params

api.params([options])

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

ПараметрТипОписание
optionsobjectОбъект параметров

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

{
  userId: id,
  commentId: id
}

query

api.query([queryOptions])

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

ПараметрТипОписание
queryOptionsobjectОбъект query параметров

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

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

data

api.data([dataOptions])

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

ПараметрТипОписание
dataOptionsobjectОбъект data параметров

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

{
  user_id: id
}

options

api.options([options])

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

ПараметрТипОписание
optionsobjectОбъект 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

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

5 years ago

1.2.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago