我有一个Android应用程序,它使用java rest api,它从mysql数据库中获取数据。
打开应用程序后,我会下载一些项目列表。然后,我再发出5个请求来休息api以获取其他连接资源,所以:
首先,我下载商店列表。 然后,有了这些商店ID,我发出5个http请求来休息api,它从(mysql)获取照片列表(不是实际图像,只是网址和ID),评级,开放时间和2个以上的东西
这会产生6次api(和db)调用,这需要很长时间。 有没有更好的方法呢?
答案 0 :(得分:1)
您可以将多个查询重写为一个JOIN,并在单个网络往返中获取它们。
确保您了解花费的时间和原因。如果您有WHERE子句不使用索引,您的查询可能会很慢。运行EXPLAIN PLAN,看看是否有正在执行的TABLE SCAN。如果您看到一个,则可以通过在WHERE子句中的列上添加适当的索引来立即提高性能。
答案 1 :(得分:1)
为什么不在第一次通话中检索所有这些数据? restapi的反应可以是json或xml。
REQUEST: GET /shop/list
RESPONSE XML:
<shops>
<shop name="shop1" img="../../img1.jpg" ></shop>
<shop name="shop2" img="../../img2.jpg" ></shop>
<shop name="shop3" img="../../img3.jpg" ></shop>
</shops>
RESPONSE JSON:
[{name:"shop1",img:"../../img1.jpg"},
{name:"shop2",img:"../../img2.jpg"},
{name:"shop3",img:"../../img3.jpg"}]
您可以在Java / Android应用程序中处理这些响应