与非 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.
有两种实现方式:
- 使用
mutateRequests(…)
重写请求。这使您可以在发送前任意更改 URLRequest
。
- 自己写
NetworkingProvider
。这有点麻烦,但可以更全面地控制重写。例如,如果您还需要重写响应,或者如果您必须将一个虚拟请求转换为多个真实请求,则此方法可能更合适。
更多内容在 discussion here。
我知道这可能不太可能,但是是否可以将 Siesta 与完全非 RESTful API 一起使用?我必须使用的 API(并且不在我的控制范围内,所以遗憾的是无法更改)要求每个请求都是 POST 请求,无论它是否纯粹是检索数据。
我通读了 question/answer
每个请求都必须 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.
有两种实现方式:
- 使用
mutateRequests(…)
重写请求。这使您可以在发送前任意更改URLRequest
。 - 自己写
NetworkingProvider
。这有点麻烦,但可以更全面地控制重写。例如,如果您还需要重写响应,或者如果您必须将一个虚拟请求转换为多个真实请求,则此方法可能更合适。
更多内容在 discussion here。