Spring - RequestMapping 默认方法文档 ambiguity/confusion?

Spring - RequestMapping default method documentation ambiguity/confusion?

来自 Spring Framework Reference 5.2.7.RELEASE:

For a @RequestMapping without HTTP method declarations, the Allow header is set to GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS.

这当然符合我们的日常编码经验。


但是,在 Spring 框架 API 文档 [5.2.7.RELEASE]RequestMapping:

元素 method 的默认值显示为

Default:

{}

我对此感到困惑。我在这里错过了什么?

你可以使用下面的例子

    @RequestMapping(value = "/collect_list", method = {RequestMethod.POST,RequestMethod.GET})

这意味着没有默认方法,所以你必须在你的函数中明确声明你想使用哪一个。否则,所有类型的请求都将到达该端点。 因此,将其留空不是一个好习惯。您可以改用 @GetMapping 等,例如 @RequestMapping(value = "/myurl", method = {RequestMethod.GET}) 的排序。 一开始可能有点混乱,但如果你声明为空,那么最好选择接收所有请求然后 none。我认为这就是它背后的逻辑。

method 参数可用于限制 接受的 HTTP 方法。默认是没有限制。所以默认情况下它允许所有 HTTP 方法。

现在这正是 the reference guide 告诉你的。

For a @RequestMapping without HTTP method declarations, the Allow header is set to GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS.

没有method声明来限制它,因此一切都被接受。