LSK.js – apiquery
@lskjs/apiquery – http/s + websockets api client for Web, Node.js and React Native throw fetch or axios
Table of contents
⌨️ Install
yarn i @lskjs/apiquery axios lodash
npm i @lskjs/apiquery axios lodash
Apiquery
http + websockets api client for Web, Node.js and React Native
const api = new ApiClient({
url: 'http://localhost:8080',
base: '/api/v1',
authToken: '#1234567890',
});
const api = new ApiClient({
base: '/api/v1',
});
api.fetch('messages')
api.fetch('/messages')
api.fetch('messages', {
base: '/api/v2'
})
api.fetch('isuvorov.ru')
api.fetch('//isuvorov.ru/api/v1')
const api = new ApiClient({
url: 'http://localhost:8080',
base: '/api/v1',
});
api.fetch('messages')
api.fetch('/messages')
api.fetch('messages', {
base: '/api/v2'
})
api.fetch('isuvorov.ru')
api.fetch('//isuvorov.ru/api/v1')
const api2 = new ApiClient({
url: 'https://localhost:8080',
base: '/api/v1',
});
api2.fetch('//isuvorov.ru/api/v1')
По стандарту отправляются хедеры, которые маркируют пакет как JSON.
Если вам нгеобходимо отправить пакет, без Content-Type: application/json; charset=utf-8
, необходимо воспользоваться следующим способом.
Это может быть полезно например для загрузки изображения методом POST multipart/form-data
const api = new ApiClient({
base: '/api/v1',
});
await api.fetch('/upload', {
method: 'POST',
headers: {
'Content-Type': '!',
},
body,
});
afterFetch
Функция обрабатывает данные которые приходят в fetch. Возвращает или payload результата (JSON объект) или генерирует ошибку.
Стандартное поведение - генерировать ошибку при статусе пакета >= 400, или при наличии объекта err в JSON ответе.
Для того чтобы изменить поведение обработки ошибок на определенных старницах, можно передать функцию (function) которая особым образом обрабатывает ошибки.
Предположим что, для страницы /api/v1/users
, в случае отсутсвия пользователей нам возвращяется ошибка Error 404
, вместо []
и нам нужно проигнорировать стандартное поведение в этом случае. При этом, чтобы при других видах ошибок - поведение оставалось прежним.
const api = new ApiClient({
base: '/api/v1',
});
api.fetch('users', {
afterFetch: function (data) {
const { res } = data;
if (res.status === 404) {
return []
}
return this.afterFetch(data)
}
})
throwError
const api = new ApiClient({
base: '/api/v1',
});
api.fetch('users', {
afterFetch: function (data) {
const { res } = data;
if (res.status === 404) {
return []
}
return this.afterFetch(data)
}
})
ws
Работа с сокетами: socket.io
const api = new ApiClient({
base: '/api/v1',
});
const s1 = api.ws('messages')
s1.on('message', (data) => {
console.log(data);
})
const s2 = api.ws('messages', options)
📖 License
This project is licensed under the MIT License - see the LICENSE file for details
👥 Contributors
👏 Contributing
- Fork it (https://github.com/yourname/yourproject/fork)
- Create your feature branch (
git checkout -b features/fooBar
) - Commit your changes (
git commit -am 'feat(image): Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request
📮 Any questions? Always welcome :)