我有一个Spring MVC REST服务。它是基于注释的,我没有XML配置文件。
控制器类如下所示:
@RestController
public class CustomerInfoController
{
...
@RequestMapping("/greet")
public String helloGreeting()
{
return "Welcome to REST Test :-)";
}
@RequestMapping("/getCusomterInfo")
public String getCustomerInfo(@RequestParam int vendorId, @RequestParam int customerId, @RequestParam boolean isDetail)
{
....
return "<result>";
...
}
...
}
Web 应用部署在 Tomcat 8.5.11 中。
部署 Web 应用程序战争时,我已经确认了 Tomcat 控制台输出上的以下 2 行日志:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.register Mapped "{[/getCusomterInfo]}" onto public java.lang.String com.vir.app.controller.CustomerInfoController.getCustomerInfo(int,int,boolean)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.register Mapped "{[/greet]}" onto public java.lang.String com.vir.app.controller.CustomerInfoController.helloGreeting()
这意味着映射是在部署期间发现并完成的。
我正在使用Firefox RESTClient进行测试。
问题是我得到了虚拟服务 greet(( 的正确结果,但对于 getCusomterInfo,我收到如下错误:
org.springframework.web.servlet.PageNotFound.noHandlerFound No mapping found for HTTP request with URI [/virindia/getCustomerInfo] in DispatcherServlet with name 'dispatcher'
RESTClient 显示 404 找不到错误资源。
谁能帮我找出问题所在?请记住,它不是基于配置文件的配置,仅基于注释。
你识别拼写错误吗?
RequestMapping("/getCusomterInfo")
有一个简单的错别字。您拼错了客户。
Instead of
@RequestMapping("/getCusomterInfo")
Change it to
@RequestMapping("/getCustomerInfo")
我花了2个多钟才找到那个错字。
您没有控制器 '/virindia/getCustomerInfo'。此外,您还可以声明参数:vendorId,customerId,isDetail
尝试
/getCustomerInfo?vendorId=0&customerId=0&isDetails=true
或使用可选类。
添加注释@ResponseBody以向控制器说明您要转换为JSON格式
@RequestMapping("/getCusomterInfo")
@ResponseBody
public Customer getCustomerInfo(@RequestParam int vendorId, @RequestParam int customerId, @RequestParam boolean isDetail)
{
//here you should retrieve your customer entity
return customer;
}