Использование Siesta с не успокаивающим API
Я знаю, что это, вероятно, длинный путь, но возможно ли использовать Siesta с полностью не-RESTful API? API, с которым мне приходится работать (и который не находится в моем контроле, поэтому, к сожалению, не может измениться), требует, чтобы каждый запрос был POST-запросом, независимо от того, является ли он просто получением данных или нет.
Я прочитал вопрос / ответ, который дает мне проблеск надежды, однако большая разница между этим вопросом и моим - это конечные точки каждого запроса. Для API, который я использую, они все одинаковые:(
Каждый запрос должен отправлять /api/api_post.php
, а все остальное указывается в качестве параметра, указанного в запросе.
Очевидно, что я могу свернуть свою собственную оболочку запроса, чтобы справиться с этим, но я хотел бы иметь возможность использовать некоторые функции, предоставляемые Siesta, и не беспокоиться обо всех неприятностях, связанных с работой в сети. Есть ли способ сделать это вообще, или мне не повезло?
1 ответ
Вы можете заставить свое приложение работать с воображаемым API REST, а затем преобразовать его в запросы без перерыва под нос Сиесты. (Например, GET /foo/3
может быть преобразован в POST /api/api_post.php
с item=foo&id=3
.) Это немного хлопотно, но дает вам преимущества Siesta даже для API не-REST.
Есть два способа реализовать это:
- использование
mutateRequests(…)
переписать запросы. Это позволяет вам произвольно изменятьURLRequest
до того как оно отправлено. - Написать свой
NetworkingProvider
, Это немного больше хлопот, но дает более полный контроль над переписыванием. Этот подход может быть более подходящим, если, например, вам также нужно переписать ответы или если вам нужно превратить один виртуальный запрос в несколько реальных.
Подробнее в обсуждении здесь.