我有一个spring-boot
休息api。
在application.properties
我有:
server.port=8100
server.contextPath=/api/users
有一个控制器:
@RestController
@RequestMapping("")
public class UserService {
@RequestMapping(value = "", method = POST, produces = "application/json; charset=UTF-8")
public ResponseEntity<UserJson> create(@RequestBody UserJson userJson) {
...
}
}
我打电话的时候:
POST http://localhost:8100/api/users/
注意尾随斜杠(使用用户的json) - create
方法执行正常。
但是当我打电话时:
POST http://localhost:8100/api/users
没有斜线(使用用户的json) - 我收到405
错误:
{
"timestamp": 1520839904193,
"status": 405,
"error": "Method Not Allowed",
"exception": "org.springframework.web.HttpRequestMethodNotSupportedException",
"message": "Request method 'GET' not supported",
"path": "/api/users/"
}
我需要的网址没有斜杠,仅.../api/users
,以及为什么它被视为GET
方法?
更新
如果我将RestController中的server.contextPath
更改为server.contextPath=/api
并将@RequestMapping
更改为@RequestMapping("/users")
,一切正常。在URL的末尾使用和不使用尾部斜杠调用create
方法。
答案 0 :(得分:1)
如果我将 RestController 中的 server.contextPath
更改为 server.contextPath=/api
并将 @RequestMapping
更改为 @RequestMapping("/users")
,一切正常。正在调用 create()
方法,在 URL 末尾使用和不使用尾部斜杠。