嗨,我是一个正在做我的学术项目的学生,我需要一些完成我的项目的指导。
我的项目是基于grails框架,从3个不同的书店搜索图书,并给出所有3个商店的d价格。我需要在搜索部分的帮助。如何在用户输入所需图书后直接搜索这些书店。
提前感谢
发布于 2012-04-12 14:16:14
你需要提供更多的细节。通过搜索书店,你是指在数据库中搜索,还是像亚马逊等一样?
发布于 2012-04-12 18:53:38
我会找出这些在线书店是否有API,或者如果你可以选择,选择做的在线书店API,你可以用它来进行搜索。例如,亚马逊有一个"Product Advertising API“,可用于搜索其目录(请参阅http://docs.amazonwebservices.com/AWSECommerceService/latest/DG)。你通常必须注册为会员才能访问这类东西。
一旦您有了几个可以通过API访问的在线书店,编写一些grails代码来调用它们并协调结果就相对容易了。API通常采用Web请求的形式,要么是REST,要么是SOAP (例如,参见Amazon - AnatomyOfaRESTRequest)。Groovy的HTTPBuilder可以用来调用和消费书店的API服务,如果你能使用简单的REST,或者我相信有几个Grails插件(例如REST Client builder)。对于SOAP,考虑一下Grails CXF Client Grails插件。
您可以逐个对API进行搜索,或者如果您想获得更高级的功能,可以尝试使用新的Servlet3.0异步特性同时调用所有3个API(请参阅如何在Grails 2.0.x中使用:Grails Web Features -滚动到“Servlet3.0异步特性”)。您可能需要通过DB来协调这一点,也许还需要在结果页面上通过AJAX进行轮询,以检查何时收到结果。
因此,序列如下:
API服务器创建并保存DB对象以跟踪请求,异步启动
注意:如果你的书店没有API,你可能不得不考虑直接从书店的网站上“网络抓取”结果。这是一个有点困难,可以是相当脆弱的,因为网页明显频繁变化。我已经使用Geb (http://www.gebish.org/)自动化了浏览,并使用一些简单的字符串匹配来挑选出我需要的东西。还要记得检查所涉及的网站的条款和条件,因为有时刮刮是特别不允许的。
还要注意的是,上面是一种面向服务器的方法来完成这类事情。您可以完全在客户端(浏览器)上执行此操作,使用AJAX调用via服务并通过JavaScript进行处理。但我是一个服务器管理员:)
https://stackoverflow.com/questions/10117625
复制相似问题