与非 restful API 一起使用 Siesta

Using Siesta with a non-restful API

我知道这可能不太可能,但是是否可以将 Siesta 与完全非 RESTful API 一起使用?我必须使用的 API(并且不在我的控制范围内,所以遗憾的是无法更改)要求每个请求都是 POST 请求,无论它是否纯粹是检索数据。

我通读了 question/answer 这给了我一线希望,但是这个问题和我的最大区别在于每个请求的端点。对于我正在使用的API,它们都是一样的:(

每个请求都必须 POST 到 /api/api_post.php,其他所有内容都指定为请求中提供的参数。

显然,我可以推出自己的请求包装器来处理这个问题,但我希望能够使用 Siesta 提供的一些功能,而不必担心处理网络的所有烦恼。有什么办法可以做到这一点,还是我运气不好?

您可以让您的应用使用假想的 REST API,然后在 Siesta 眼皮底下将其转换为非 restful 请求。 (例如,GET /foo/3 可能会用 item=foo&id=3 转换为 POST /api/api_post.php。)这有点麻烦,但即使对于非 REST [=31],它也能让你受益于 Siesta =]s.

有两种实现方式:

  1. 使用mutateRequests(…)重写请求。这使您可以在发送前任意更改 URLRequest
  2. 自己写 NetworkingProvider。这有点麻烦,但可以更全面地控制重写。例如,如果您还需要重写响应,或者如果您必须将一个虚拟请求转换为多个真实请求,则此方法可能更合适。

更多内容在 discussion here