您好我是一名学生正在完成我的学术项目。我需要一些指导来完成我的项目。
我的项目基于Grails框架,该框架从3个不同的书店搜索书籍,并从所有3个商店中提供d价格。我需要帮助搜索部分。 一旦用户为所需书籍打字,如何指导搜索这些书店。
提前致谢
答案 0 :(得分:1)
您需要提供更多详细信息。通过搜索书店,您的意思是在数据库中搜索还是像亚马逊等?
答案 1 :(得分:0)
我会发现这些在线书店是否有API,或者如果您有选择,请选择的 的在线书店,您可以使用这些API进行搜索。例如,亚马逊有一个“产品广告API”,可用于搜索其目录(请参阅http://docs.amazonwebservices.com/AWSECommerceService/latest/DG)。您通常必须注册为联盟会员才能访问这些内容。
一旦你有几个可以通过API访问的在线书店,就可以相对容易地编写一些grails代码来调用它们,并协调结果。 API通常采用Web请求的形式,REST或SOAP(例如,请参阅Amazon - AnatomyOfaRESTRequest)。如果你可以使用简单的REST,或者我相信有几个Grails插件(例如REST Client builder),Groovy的HTTPBuilder可用于调用和使用书店的API Web服务。对于SOAP,请考虑Grails CXF Client Grails插件。
您可以逐个搜索API,或者如果您想获得更高级的搜索,可以尝试使用新的servlet 3.0异步功能同时异步调用所有3个API(请参阅如何使用Grails 2.0.x:Grails Web Features - 滚动到“Servlet 3.0异步功能”)。您可能需要通过数据库进行协调,并可能通过结果页面上的AJAX进行轮询,以检查结果何时进入。
所以序列如下:
请注意,如果您的书店没有API,您可能需要考虑直接从书店的网站“网络抓取”结果。这有点困难,因为网页显然经常变化,所以可能会非常脆弱。我使用Geb(http://www.gebish.org/)来自动浏览以及一些简单的字符串匹配来挑选我需要的东西。还记得查看条款和涉及网站的条件,因为有时候特别不允许抓取。
另请注意,上面是一种面向服务器的方法来完成这种事情。你可以在客户端(浏览器)上完成它,使用AJAX调用web服务并通过JavaScript处理。但我是服务员:)