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
声明来限制它,因此一切都被接受。
来自 Spring Framework Reference 5.2.7.RELEASE
:
For a
@RequestMapping
without HTTP method declarations, theAllow
header is set toGET,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, theAllow
header is set toGET
,HEAD
,POST
,PUT
,PATCH
,DELETE
,OPTIONS
.
没有method
声明来限制它,因此一切都被接受。