Java 如何优化RESTAPI调用
我正在构建mashup移动应用程序。我需要调用我的API提供商,并和Facebook、twitter等进行集成。在这个过程中,我必须对同一个域(当然是使用不同的路径和查询参数)逐个进行多个REST API调用。此外,API调用必须是连续的,因为需要一个调用下一个调用。我可以用什么方法优化这些http调用以避免往返。欢迎对java和js提出建议如果您需要第一次API调用的结果以便进行下一次API调用,那么您在客户端无法避免每次调用的顺序往返。可能需要一个现有的API调用来将多个调用合并为一个调用,或者需要向服务器添加这样的API调用,或者需要使用代理服务器来代表您这样做Java 如何优化RESTAPI调用,java,javascript,rest,mobile,Java,Javascript,Rest,Mobile,我正在构建mashup移动应用程序。我需要调用我的API提供商,并和Facebook、twitter等进行集成。在这个过程中,我必须对同一个域(当然是使用不同的路径和查询参数)逐个进行多个REST API调用。此外,API调用必须是连续的,因为需要一个调用下一个调用。我可以用什么方法优化这些http调用以避免往返。欢迎对java和js提出建议如果您需要第一次API调用的结果以便进行下一次API调用,那么您在客户端无法避免每次调用的顺序往返。可能需要一个现有的API调用来将多个调用合并为一个调用,
如果您不需要第一次API调用的结果来进行下一次API调用,但您只想按顺序处理结果,那么您可以一次进行所有API调用,并构建响应代码以按顺序处理它们(保存无序到达的任何结果以供以后处理).所述要求非常广泛。由于您使用的是公共的第三方API,这在一定程度上限制了可能的优化范围。由于API不属于您,因此您绝对无法加快API的速度 总的来说,我建议遵循以下指导原则,这将帮助您提出更好的应用程序
请注意,这些是一般准则。有些可能不适用于您的特定用例 如果您可以使用jQuery,我建议您看看我的插件,它可以帮助实现异步调用顺序 REST是统一的,因此,过滤器和往返是实现特定功能所必需的。当涉及到优化和将多个客户机请求模拟成一个请求时,您将慢慢开始面临统一范例的挑战,因为it客户机可能比合同在一次统一调用中所能做的具体得多。虽然可以对REST进行大量优化,将API调用的数量减少到两个甚至一个调用,但有时,您的客户机请求将需要复杂的筛选,在应用额外的筛选逻辑之前,需要服务器提供反馈 如果您的需求是必须有一个API调用来处理来自服务器而不是客户端的特定客户端请求,而所有筛选器都不适用,那么RPC将是您的选择,它将以restful方式处理从服务器到其他微服务(SOA)的特定业务逻辑
真正的问题是,如果您希望保持RESTAPI的统一性和一致性,并让客户端实现自己独特的逻辑,那么为什么要让服务器来处理这样的请求。REST API服务器应为客户端提供超链接/超媒体,以指导客户端以最佳方式减少API调用的数量,无论是通过过滤还是任何其他实体/资源 编程级别-使用代码优化/线程/并行编程 API级别-使用分页/过滤器/范围生成细粒度数据,以适应客户端的需要 缓存-听说过“最快的HTTP调用是你不做的”,也就是说,使用缓存(Memcache/Redis),大多数请求都是读取操作,明智地使用缓存控制头也很有用。这样就避免了数据库为重复的读取请求提供服务,而重复的读取请求代价高昂。(不确定ETag是否有任何用途?) 请求/响应-对通过web传输的数据使用JSON序列化程序和gZip压缩技术 地理位置-考虑到最终用户和源服务器之间的距离,我们可以使用CDN存储响应的静态内容,以便能够快速提供服务
(听说过异步方法/反应式编程可以提高API的性能,但不是很确定)你能在REST API方面做出改变吗?@JunedAhsan,这似乎不太可能。因为一些API OP提到的是FB Tw等。@Santosh哦,我错过了,很糟糕