Сиеста configureTransformer для ресурса с параметрами - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь настроить преобразователь для конечной точки с параметрами.

Я успешно настроил преобразователи для конечных точек, которые не содержат никаких параметров.Но кажется, что когда я пытаюсь сделать то же самое для Ресурса с параметрами, он не будет работать.

Вот как я настраиваю преобразователь:

var getExampleData: Resource { return resource(exampleDataEndpoint) }
configureTransformer(getExampleData) {
            try jsonDecoder.decode(ExampleDataResponse.self, from: $0.content)
}

И вот как я отправляюзапрос:

Api.getExampleData.withParam("foo", "bar").addObserver(self).loadIfNeeded()

Я получаю ответ, но он никогда не идет через конвейер трансформатора.

Response:  200 ← GET http:example.com/enpoint?foo=bar
Siesta:pipeline │ [thread ᎠᏔᎼᎼ]  └╴Response after pipeline: success: 28 bytes

РЕДАКТИРОВАТЬ

Проверено .withParam() метод преобразования, который работает нормально, и кажется, что URL-адрес должен быть одинаковым для работы трансформаторов Siesta, это облом.

1 Ответ

0 голосов
/ 11 апреля 2019

Разные строки запроса означают разные URL, а разные URL означают разные ресурсы Siesta :

Обратите внимание, что «URL» включает в себя весь URL: протокол, хост, путь иСтрока запроса.Однако он не включает заголовки.Разные строки запроса?Разные ресурсы.http против https?Различные ресурсы.

Таким образом:

let resource0 = Api.getExampleData
let resource1 = Api.getExampleData.withParam("foo", "bar”)
resource0 == resource1  // → false

Итак, когда вы делаете это:

configureTransformer(getExampleData) { ... }

… это относится только к getExampleData, а не к любомуварианты с разными параметрами.

Если вы хотите, чтобы конфигурация применялась ко всем ресурсам, которые совместно используют путь, сопоставьте путь:

configureTransformer("/example/path") { ... }
...