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
- Оптимизировать сборку