Spring-boot rest api。截断尾随斜杠

时间:2018-03-12 07:36:35

标签: java rest spring-boot request-mapping

我有一个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方法。

1 个答案:

答案 0 :(得分:1)

如果我将 RestController 中的 server.contextPath 更改为 server.contextPath=/api 并将 @RequestMapping 更改为 @RequestMapping("/users"),一切正常。正在调用 create() 方法,在 URL 末尾使用和不使用尾部斜杠。