Содержит цепочки из-коробки для работы с URL запросами.
По умолчанию реализована цепочка из следующих узлов:
LoggerNode
- выводит логиChainConfiguratorNode
- выполняет всю последующую работу вbackground
, а ответ диспатчит наmain
LoadIndicatableNode
- показывает индикатор загрузки в статус-бареModelInputNode
- маппит ответ изRawMappable
вDTOConvertible
DTOMapperNode
- маппит запрос изDTOConvertible
вRawMappable
MetadataConnectorNode
- добавляетmetadata
вRequestModel
RequestRouterNode
- добавляет маршрут к запросуRequstEncoderNode
- добавляет кодировку к запросуUrlRequestTrasformatorNode
- Этот узел формирует конкретныйURL
запрос. Преобразуяmetadata
вheaders
,route
вURL
и т.д.RequestCreatorNode
- создает запрос в сеть с помощьюAlamofire
TechnicaErrorMapperNode
- маппит технические ошибки (таймаут, отсутствие интернета и т.п.)RequestSenderNode
- отправляет запрос в сеть. Не маппит его. Просто отправляетResponseProcessorNode
- занимается обработкой ответа от сервера. Проверяет, успешно выполнился запрос или нет. Если успешно, то можно ли замаппить ответ в JSON или нетResponseHttpErrorProcessorNode
- этот узел занимается проверкой, возникли ли какие-то HTTP-ошибки (проверяет код). Если да, то создает экземплярResponseHttpErrorProcessorNodeError
и заканчивает выполнение цепочкиResponseDataPreprocessorNode
- здесь мы проверяем ответ. Является ли он Json-объектом или Json-массивомResponseDataParserNode
- получаемJson
изData
Эта цепочка НЕ содержит кэширования.
build<I,O>
- классический запрос. Ожидает данные как на вход так и на выход. (описано выше)
build<Void, Void>
- цепочка не ожидающая данных на вход и на выход (да, и такое бывает)
build<I, Void>
- цепочка, ожидающая данные на вход, но не возвращающая данные (сервер отвечает пустым телом)
build<Void, I>
- цепочка, не ожидающая данные на вход, но ожидающая на выход (классический GET-запрос)
loadData<Void, Data>
- цепочка, которая просто скачивает нужный файл (например, качаем статически раздающийся файл)
loadData<I, Data>
- цепочка, скачивающая файл и передающая на сервер какие-то данные (и так бывает, да)
build<I, O> where I.DTO.Raw = MultipartModel<[String : Data]>
- цепочка, которая позволяет отправлять multipart-запросы
set(query: [String: Any])
- изменяет URL-Query параметр у запроса.
set(boolEncodingStartegy: URLQueryBoolEncodingStartegy)
- устанавливает стратегию парсинга булевых переменных в URL-query параметры. Доступные из-коробки имплементации: URLQueryBoolEncodingDefaultStartegy.asInt
, URLQueryBoolEncodingDefaultStartegy.asBool
. По-умолчанию ставится .asInt
set(boolEncodingStartegy: URLQueryBoolEncodingDefaultStartegy)
- то же самое, только вместо протокола принимает тип доступный из-коробки (для красоты конфигурирования)
set(arrayEncodingStrategy: URLQueryArrayKeyEncodingStartegy)
- устанавливает стратегию парсинга ключей массивов в URL-query параметры. Доступные из-коробки имплементации: URLQueryArrayKeyEncodingBracketsStartegy.brackets
, URLQueryArrayKeyEncodingBracketsStartegy.noBrackets
. По-умолчанию ставится .brackets
set(arrayEncodingStrategy: URLQueryArrayKeyEncodingBracketsStartegy)
- то же самое, только вместо протокола принимает тип доступный из-коробки (для красоты конфигурирования)
set(dictEncodindStrategy: URLQueryDictionaryKeyEncodingStrategy)
- устанавливает стратегию парсинга ключей словарей в URL-query параметры. Из-коробки доступна только URLQueryDictionaryKeyEncodingDefaultStrategy
.
set(metadata: [String: String])
- устанавливает хедеры запроса, которые добавляются на этапе конструирования в запросе (узел MetadataProviderNode
). По-умолчанию словарь пуст.
route(_ method: Method, _ route: Route)
- устанавливает http-метод и url для запроса.
encode(as encoding: ParametersEncoding)
- устанавлиает кодировку для запроса. По-умолчанию .json
add(provider: MetadataProvider)
- добавляет провайдер заголовков к запросу. Эти провайдеры будут вызваны непосредственно перед отправкой запроса.
log(exclude: [String])
- позволяет исключить какие-то определенные логи по их ID. В качестве ID у лога ставится имя узла. Подробнее тут