使用 Grails 构建富 Internet 应用程序,第 2 部分: Grails 和 Google Web Toolkit
2009-11-19 00:00:00 来源:WEB开发网搜索 API 服务
现有的应用程序已有一个搜索业务服务。我们仅使用它的列表 API 为应用程序中的所有新闻提供一个列表。看看这个服务的其他功能,如清单 1 所示。
清单 1. 搜索业务服务class SearchService {
boolean transactional = false
def list() {
Story.list()
}
def listCategory(catName){
Story.findAllWhere(category:catName)
}
def searchTag(tag){
Story.findAllByTagsIlike("%"+tag+"%")
}
}
listCategory 方法查找特定类别中的所有新闻。searchTag 方法查找带有特定标记的所有新闻。它不要求精确匹配,也不区分大小写。如前所述,到目前为止我们仅使用列表 API。现在我们创建一个使用这两个方法的新 Web 服务。您仅需将一个新方法添加到 ApiController,如清单 2 所示。
清单 2. 新的 ApiControllerimport grails.converters.*
class ApiController {
// injected services
def searchService
def storyService
def search = {
def results= null
def tagResults = null
if (params.tag){
tagResults = searchService.searchTag(params.tag)
}
def catResults = null
if (params.category){
catResults = searchService.listCategory(params.category)
}
if (params.tag && params.category){
def tagMap = [:]
tagResults.each{ story ->
tagMap[story.id] = story
}
results = catResults.findAll { tagMap[it.id] != null}
} else {
if (params.category){
results = catResults
} else {
results = tagResults
}
}
render results as JSON
}
}
更多精彩
赞助商链接