我实际上是在创建一个简单的应用程序,我需要在多种情况下使路由模式相同:
/*
* Returns a list of all the root directories accepting query string on name
*/
@RequestMapping(value = "/directories", method = RequestMethod.GET)
public List<DirectoryEntity> find() {
return directoryService.findAll();
}
/*
* Returns a list of all the root directories accepting query string on name
* @param name Name of the ressources to search. Query string at format : *name*
*/
@RequestMapping(value = "/directories", method = RequestMethod.GET)
public List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
return directoryService.findByName(name);
}
事实上,我不想在与findAll相同的函数中管理条件请求。无论如何处理这种情况而不必强制管理同一函数内的所有内容?
感谢您提前
答案 0 :(得分:1)
尝试更改第二种方法@RequestMapping注释添加参数:
@RequestMapping(value = "/directories", method = RequestMethod.GET, params = "name")
public List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
return directoryService.findByName(name);
}
有关详细信息,另请参阅Spring Documentation。
答案 1 :(得分:1)
我不太确定你在问什么,但是假设决定调用哪个方法是基于请求参数(必须是因为它们都是相同的URL和HTTP方法),那么像这样的东西可能有所帮助:
@RequestMapping(method=RequestMethod.GET, params={"name"})
public @ResponseBody List<DirectoryEntity> findByCriteria(@RequestParam(value = "name", required = true) String name) {
//do your stuff
}
在params
注释中包含@RequestMapping
属性可消除调用哪种方法的歧义。
我还在返回类型中添加了@ResponseBody
,以防你希望Spring返回HTTP响应中的列表。