2011-12-12 84 views
1

我目前使用Google Places API来检索移动应用程序(iOS和Android)中的信息。调用第三方网络服务的有效方式

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

目前谷歌要求我们用一个URL的结构是这样的:

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

现在想,如果我有嵌入此网址到我的代码和谷歌改变了这种URL或我决定使用一些其他的服务,那么它需要在生产中再次修改我的代码。

是否有可能以其他方式做到这一点,以便我的应用程序代码可以不受任何此类更改的影响。

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

图解地解释

早些时候,我在做这个

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

现在,我思考这种结构

我的应用程序 - >请求我的服务器与所需的参数 - >请求Google服务器或任何第三方场所API我想要使用 - >对我的服务器的响应 - >以我需要的形式呈现给我的应用程序。

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

有没有更好的方法?

+0

问题的标题是有点用词不当,因为你承认你愿意牺牲性能/效率的容错。 –

+0

我知道我的方法效率会降低。但我不知道这是否是唯一的方法,或者是否有其他方法可以在不牺牲效率的情况下完成任务。此外,我不知道延迟是否会非常显着 – krammer

+1

您可以通过您的服务器路由所有内容,并且如果您查看的请求频率相对较低,我想您会没事的。但是如果你有超过50个高饱和度的并发请求(这个服务会频繁发出很多请求),我想你可能会发现自己被烧了。你想要的是一种更简单的方式来更新发送给客户端的位于中心的服务URL。你可以用一个简单的配置文件来做到这一点。 –

回答

0

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

+0

如果我想控制URL,它会起作用。但是,如果返回的JSON格式也发生变化,或者我使用其他服务会返回完全不同的JSON格式。 – krammer

+0

因此,只需在应用程序的一次初始调用中完成所有这些细节,您仍然可以通过不通过服务器调用所有内容来减少主要开销。无论你可以解析/转换服务器端可以转换应用程序端,并为您节省一些网络时间。 – MikeIsrael

1

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

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