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

时间:2011-12-12 11:53:59

标签: php android ios web-services

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

现在我的问题是如何设计我的应用程序,以便我的应用程序代码不受谷歌或任何第三方服务的URL结构的任何变化的影响。

目前,Google要求我们使用以下网址结构:

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

现在假设我已将此网址嵌入到我的代码中,并且Google更改了此网址,或者我决定使用其他服务,那么一旦投入生产,就需要再次修改我的代码。

是否可以通过其他方式执行此操作,以便我的应用程序代码可以保持对任何此类更改的免疫。

我也通过PHP通过我自己的服务器将一些东西流式传输到我的应用程序中。 因此,最好先将信息请求发送到我的服务器,然后从谷歌的服务器获取这些详细信息,然后以所需的格式将它们返回给我的代码。

以图解方式解释

早些时候我正在这样做

我的应用程序 - >请求Google的服务器 - >来自Google服务器的回复 - >到我的应用

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

我的申请 - >使用所需参数向我的服务器请求 - >请求Google的服务器或我想要使用的任何第三方地点API - >对我的服务器的响应 - >以我要求的形式到我的应用程序。

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

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

Here is more detailed description of the Architecture I am using.

答案 1 :(得分:0)

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