GET 映射有效,但 POST、PUT 和 DELETE 的状态为 405(在 spring-boot Restful api 中)
GET mapping works but POST, PUT and DELETE have status 405 (in spring-boot Restful api)
我使用 Intellij idea 并创建了一个 spring-boot 项目。我的问题是请求方法,当我使用 GET 方法时,它可以工作,但是 POST、PUT 和 DELETE 方法会抛出该死的 Whitelabel 错误页面!!
错误内容为:
"There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported"
@RestController
@RequestMapping("/")
public class CustomerInquiryController {
@GetMapping("/get")
public String getMessage(){
return "msg is fetched!";
}
@PostMapping("/post")
public String addMessage(){
return "msg is added!";
}
@PutMapping("/put")
public String editMessage(){
return "msg is edited!";
}
@DeleteMapping("/del")
public String deleteMessage(){
return "msg is deleted!";
}
}
HTML 表单支持 GET 和 POST。
HTML5 个在某一时刻添加了 PUT/DELETE,但那些被删除了。
您的浏览器仅发出 GET
请求(如果通过表单,则发出 POST
请求),您无法从浏览器测试其他请求方法。使用 postman
、curl
、wget
或类似工具访问这些端点。
在命令行中尝试 curl -X POST http://<YOUR_HOST>:<PORT>/post
。如果这个 returns msg is added!
你的 POST 正在工作。尝试使用替代工具或表单 post 然后 post 数据。
在 运行 命令之前用您正在使用的主机名或 ip 和端口号替换。
它根据 cardouken 的评论将 "method = {RequestMethod.GET, RequestMethod.POST}" 添加到 class 注释。早些时候,我在我的方法之前使用了这个注释,但它没有用。这很奇怪。
嗯,实际上,你甚至不需要 @RequestMapping("/")
。
这会完成工作:
@RestController
public class CustomerInquiryController {
@GetMapping("/get")
public String getMessage(){
return "msg is fetched!";
}
@PostMapping("/post")
public String addMessage(){
return "msg is added!";
}
// .. other mappings..
}
我使用 Intellij idea 并创建了一个 spring-boot 项目。我的问题是请求方法,当我使用 GET 方法时,它可以工作,但是 POST、PUT 和 DELETE 方法会抛出该死的 Whitelabel 错误页面!! 错误内容为:
"There was an unexpected error (type=Method Not Allowed, status=405). Request method 'GET' not supported"
@RestController
@RequestMapping("/")
public class CustomerInquiryController {
@GetMapping("/get")
public String getMessage(){
return "msg is fetched!";
}
@PostMapping("/post")
public String addMessage(){
return "msg is added!";
}
@PutMapping("/put")
public String editMessage(){
return "msg is edited!";
}
@DeleteMapping("/del")
public String deleteMessage(){
return "msg is deleted!";
}
}
HTML 表单支持 GET 和 POST。 HTML5 个在某一时刻添加了 PUT/DELETE,但那些被删除了。
您的浏览器仅发出 GET
请求(如果通过表单,则发出 POST
请求),您无法从浏览器测试其他请求方法。使用 postman
、curl
、wget
或类似工具访问这些端点。
在命令行中尝试 curl -X POST http://<YOUR_HOST>:<PORT>/post
。如果这个 returns msg is added!
你的 POST 正在工作。尝试使用替代工具或表单 post 然后 post 数据。
在 运行 命令之前用您正在使用的主机名或 ip 和端口号替换。
它根据 cardouken 的评论将 "method = {RequestMethod.GET, RequestMethod.POST}" 添加到 class 注释。早些时候,我在我的方法之前使用了这个注释,但它没有用。这很奇怪。
嗯,实际上,你甚至不需要 @RequestMapping("/")
。
这会完成工作:
@RestController
public class CustomerInquiryController {
@GetMapping("/get")
public String getMessage(){
return "msg is fetched!";
}
@PostMapping("/post")
public String addMessage(){
return "msg is added!";
}
// .. other mappings..
}