指定POST时,Spring Boot会禁用静态页面的GET请求

时间:2016-05-24 22:53:46

标签: java html spring spring-mvc spring-boot

我正在尝试使用Spring Boot创建一个帐户控制器。我有一个位于static / login.html下的登录页面的html文件。当我不将POST请求映射到同一路径时,页面加载完全正常。

我有一个AccountController类:

@RestController
public class AccountController {

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public Account login(@RequestBody Map<String, Object> body) {
        // code
    }
}

此控制器禁用对html页面的GET请求。在尝试访问该页面时,我收到了;

There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported

所以我的问题基本上是,如何让POST和GET请求同时工作。如果有一个更好的文件结构我可以用于静态内容,请提出建议。

1 个答案:

答案 0 :(得分:0)

这应该有效

@RequestMapping(value = "/login", method = { RequestMethod.GET, RequestMethod.POST })
public Account login(@RequestBody Map<String, Object> body) {
    // code
}

这样,控制器映射将可用于两种方法

<强>更新

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String serveLogin(... (if needed) ) {
    // code to serve your static content
    return "index.html"; 
}

@RequestMapping(value = "/login", method = RequestMethod.POST)
public Account login(@RequestBody Map<String, Object> body) {

    // code to handle your login form POST submit
}