使用Siesta使用非RESTful API

时间:2017-08-22 22:45:06

标签: ios swift3 siesta-swift

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

我已经阅读了问题/答案here,这给了我一线希望,但是这个问题和我之间的最大区别在于每个请求的终点。对于我使用的API,他们都是一样的:(

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

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

1 个答案:

答案 0 :(得分:1)

你可以让你的应用程序使用虚构的REST API,然后将其转换为Siesta鼻子下面的非宁静请求。 (例如,GET /foo/3可能会被POST /api/api_post.php转换为item=foo&id=3。)这有点麻烦,但即使对于非REST API,它确实可以让您获得Siesta的好处。 / p>

实现此目的有两种方法:

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