注意:可以在此处找到代码:https://github.com/silentsnooc/ema-server
所以,我正在清理一个非常混乱的项目,我尝试提供静态内容以及一个小的REST API。但是,应用程序与其他任何应用程序一样启动:
@SpringBootApplication
public class Server {
public static void main(String[] args) {
SpringApplication.run(Server.class, args);
}
}
REST API适用于我,但Web客户端不适用。我已将Web客户端资源移至src/main/resources/static/
但是,如果我访问http://localhost:8080我得到的是405(不支持请求方法'GET')。
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:207) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:374) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:314) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:61) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:352) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1145) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:936) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
...
我不明白遗漏了什么 - 也许我的文件夹结构错了?
如果您需要我方提供更多信息,请与我们联系。
答案 0 :(得分:2)
如前所述,here @RestController
本身已注明@ResponseBody
,这使得RequestMapping
方法的响应成为其返回值。在您的情况下,这是您在网络浏览器中看到的index.html
字符串。
用@RestController
替换@Controller
注释应该可以解决问题。
至于你的错误,你有另一个类WordEmbeddingRestController
,它定义了" /"的映射。同样," /" (或""确切地说)是默认路径值。从此类中删除@RestController
注释将使您能够获取所需的html文件。
忽略这一点,GET
是默认方法,如果指定了
编辑:
您必须为每个方法添加要支持的方法@RequestMapping
注释。有关详细信息,请参阅this。举个例子:
@RequestMapping(path = "/", method = RequestMethod.GET)
public String index() {
return "index.html";
}
您可以使用@RequestMapping
和@GetMapping
等速记注释,而不是使用@PostMapping
显式方法。使用这些可以将你的代码减少到这样:
@GetMapping("/")
public String index() {
return "index.html";
}