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