我知道这可能是一个很长的机会,但是是否有可能将Siesta与完全非RESTful API一起使用?我必须使用的 API(并且不在我的控制范围内,所以可悲的是无法更改(要求每个请求都是 POST 请求,无论它是否纯粹是检索数据。
我已经阅读了这里的问题/答案,这给了我一线希望,但是这个问题和我的问题之间的最大区别在于每个请求的端点。对于我正在使用的 API,它们都是相同的:(
每个请求都必须 POST 到/api/api_post.php
,其他所有内容都指定为请求中提供的参数。
显然,我可以滚动自己的请求包装器来处理这个问题,但我希望能够使用Siesta提供的一些功能,而不必担心处理网络的所有烦恼。有什么办法可以做到这一点,还是我运气不好?
你可以让你的应用使用一个虚构的 REST API,然后将其转换为 Siesta 眼皮底下的非 restful 请求。(例如,GET /foo/3
可能会转换为带有item=foo&id=3
的POST /api/api_post.php
。这有点麻烦,但它确实可以让您享受 Siesta 的好处,即使对于非 REST API。
有两种方法可以实现这一点:
- 使用
mutateRequests(…)
重写请求。这使您可以在发送URLRequest
之前任意更改。 - 写你自己的
NetworkingProvider
.这有点麻烦,但可以更全面地控制重写。例如,如果您还需要重写响应,或者必须将一个虚拟请求转换为多个真实请求,则此方法可能更合适。
更多内容请在此处讨论。