【问题标题】:Spring Rest controller returns 404 not found for POST method invocationSpring Rest 控制器返回 404 未找到 POST 方法调用
【发布时间】:2020-01-15 07:58:13
【问题描述】:

我的 Spring 引导休息控制器调用出现 404 未找到

以下是我的休息控制器类:

    @RestController
    @RequestMapping("/v2")
    public class PassengerController {

        @RequestMapping(value="/addPassengerDetails", method=RequestMethod.POST)
        public Passenger addPassenger(@RequestBody Passenger p) {
            System.out.println("in Passenger Controller");
            // logic to return Passenger Type response
        }

我看到以下日志并且 SYSO 语句本身没有被打印出来。

    o.s.web.servlet.DispatcherServlet        : POST "/v2/addPassengerDetails", parameters={}
     DEBUG 1252 --- [nio-8080-exec-1] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped to ResourceHttpRequestHandler ["classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"]
   DEBUG 1252 --- [nio-8080-exec-1] o.s.w.s.r.ResourceHttpRequestHandler     : Resource not found
    --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 404 NOT_FOUND
    --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for POST "/error", parameters={}

这是我的 POST 调用请求正文:

{ “名称”:“xyz”, “年龄”:“10”, “性别女” }

我错过了什么?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    我添加了@ComponentScan,然后它就起作用了。但是我的Application类的包结构是com.xyz.main,而我的控制器类是com.xyz.controller。为什么这里需要显式声明?

    有什么建议吗?根据 spring 文档@SPringBootApplication 对其包及其所有子包进行扫描,对吗?

    【讨论】:

    • 如果您将应用程序移至com.xyz,则应自动获取com.xyz.controller@ComponentScan 在当前目录下工作。所以在你的情况下,只有它在com.xyz.main 向下找到。
    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 2013-10-04
    • 2019-10-06
    • 2020-08-15
    • 2018-07-05
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多