调用第三方web服务的有效方式


efficient way of calling a 3rd party web service

我目前正在使用Google Places API为移动应用程序(iOS和Android)检索信息。

现在我的问题是如何设计我的应用程序,使我的应用程序代码仍然免疫从谷歌或任何第三方服务的URL结构的任何变化。

目前Google要求我们使用这样的URL结构:

https://maps.googleapis.com/maps/api/place/search/output?parameters

现在假设我已经将这个URL嵌入到我的代码中,而Google更改了这个URL,或者我决定使用其他服务,那么它将需要在生产环境中再次修改我的代码。

是否有可能以其他方式做到这一点,以便我的应用程序代码可以保持对任何此类更改的免疫。

我也流式和加载一些东西到我的应用程序通过我自己的服务器通过PHP。因此,将信息请求首先发送到我的服务器,然后从谷歌的服务器获取这些详细信息,并以所需的形式将它们返回给我的代码,这是一个好主意吗?

概略地解释

之前我做过这个

我的应用程序->请求到谷歌服务器->谷歌服务器的响应->到我的应用程序

现在,我正在考虑这个结构

我的应用程序->请求到我的服务器与所需的参数->请求到谷歌的服务器或任何第三方的地方API我想使用->响应到我的服务器->到我的应用程序在所需的形式。

我知道这种方法会增加响应的延迟,但它会让我掌握控制权。而且,我可以在多个平台上使用相同的服务器端脚本。

有没有更好的办法?

我有一个类似的情况访问第三方数据,其中访问可能会在未来改变,但不是太多,也不是太频繁。我发现最简单的方法是将URL或任何其他数据放在配置数组中,在我的情况下加载到Config对象中。然后我有一个类Importer,它使用Config来决定如何获得数据。我的应用程序的其余部分只与Importer对话。因此,如果URL发生变化,我所需要做的就是在我的配置数组中更改它。

这里是我使用的架构的更详细的描述。

如何实现您的解决方案,但在应用程序加载时使用一次性调用?换句话说,当应用程序启动并为这些请求下载字符串/协议时,您将有某种注册/登录通信。这样,一旦确定了请求使用的格式,您仍然可以获得相当好的性能。