@foxford/services
v1.3.0
Published
Foxford services
Downloads
31
Readme
Сервисы Foxford
Библиотека фронтовых сервисов, которые помогут реализовать тот или иной функционал на уровне приложения. Здесь будут появляться сервисы фокса, которые будут "отвязаны" от других сервисов и функций, не принадлежащих им.
Captcha Service
Сервис для работы с капчей. В зависимости от данных с бэка используется или Google-капча, или Cloudflare Turnstile
API Service
Для чего?
Чтобы разные проекты использовали единый HTTP-клиент (Axios) сервис апи был вынесен в пакеты и опубликован в npm
Апи из пакета сервисов представляет собой фабрику, которая принимает параметры и возвращает инстанс клиента, подробнее описано здесь
Как обесепечивается единобразное использование HTTP-клиента?
Точкой правды, поставщиком HTTP-клиента является
@foxford/foxford-js-sdk (FoxfordService)
Все "потребители" должны использовать HTTP-клиент изFoxfordService
FoxfordService
использует пакет сервисов @foxford/services
для получения инстанса Api
конфигурирует его и примешивает Interceptors
и отдает наружу два клиента:
FoxfordService.foxApi
- инстанс Api, ориентированный на использование внутренних сервисов Фоксфорда, в нем:
- Используются
Api Interceptors
По умолчанию используются два обязательных перехватчика(camelize
иreferrer
) и один опциональный(captcha
) вinterceptors.request
, это:camelize
- для преобразования кейса в ответе запросаreferrer
- для проброса реферрера в запросеcaptcha
- опциональный, будет добавлен, если при инициализацииFoxfordService
, в конфиге будет передан конфиг для капчи. Подробнее здесь
- Используется
axiosRetry
- плагин Api, перехватывающий упавшие запрос и поторяющий его (3 раза) - Указан
baseURL
FoxfordService.api
- "базовый" инстанс Api, который имеет минимальную конфигурацию и не использует Interceptors и в нем не указан baseUrl Предназначен для хождения "наружу"
Базовый конфиг Api используемый для FoxfordService.api
{
xsrfCookieName: CSRF_COOKIE_NAME,
xsrfHeaderName: 'X-CSRF-Token',
headers: { 'X-Requested-With': 'XMLHttpRequest' },
}
Конфиг Api используемый для FoxfordService.foxApi
{
xsrfCookieName: CSRF_COOKIE_NAME,
xsrfHeaderName: 'X-CSRF-Token',
headers: { 'X-Requested-With': 'XMLHttpRequest' },
withCredentials: true,
}
При необходимости можно расширить или переопределить конфиг для FoxfordService.foxApi
Пример использования апи из FoxfordService
import { Foxford } from '@foxford/foxford-js-sdk'
const myHost = 'exampleHost'
const FoxfordService = new Foxford({
api: {
config: {
baseURL: myHost,
},
},
host: myHost, // легаси, на работу апи не влияет, есть "на всякий случай",
recaptchaConfig: {
locale: 'ru',
sitekey: 'captchaSecretKey',
},
})
const getInternalData = () => {
FoxfordService.foxApi.get(`/some-internal-url-protected-with-captcha`).then(({ data }) => data)
}
const getExternalData = () => {
FoxfordService.api.get(`https://some.external.source`).then(({ data }) => data)
}
Пример использования апи в stoege
import { Api, BaseApi } from 'services/api'
const getInternalData = () => {
Api.get(`/some-internal-url-protected-with-captcha`).then(({ data }) => data)
}
const getExternalData = () => {
BaseApi.get(`https://some.external.source`).then(({ data }) => data)
}