Spring mvC语言 REST Web 服务 - 一个 API 是可调用的,另一个报告"No mapping found for HTTP request with URI"



我有一个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;
 }

相关内容

  • 没有找到相关文章

最新更新