gpt4 book ai didi

java - Spring MVC 请求映射传递不应该传递的请求

转载 作者:行者123 更新时间:2023-12-01 04:56:22 25 4
gpt4 key购买 nike

编辑 - 现在已经解决了,错误出在我的 spring 配置中。我错过了<mvc:annotation-driven/>标签。添加后,一切都按预期进行。

我已经使用 Spring MVC 定义了一个 Controller ,它应该接受 HTTP GET请求地址 /controllertest仅当请求的内容类型为application/json时。它还返回 application/json 中的数据因此,只有接受该格式数据的请求才应该通过。然而,这不起作用。

这是我使用 Spring 3.2.0 的代码:

package test.controllers;

import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/controllertest")
public class TestController {

@RequestMapping(method = GET, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String helloJSON() {
return "{\"message\":\"HelloWorld\"}";
}

}

这就是我所期望的:

  1. 如果我使用 GET 以外的任何 HTTP 方法我应该收到 405 - Method not allowed回应
  2. 如果我发送不接受的请求application/json我应该收到 406 Not Acceptable回应。
  3. 如果我发送的请求的内容类型不是 application/json我应该收到 415 Unsupported Media Type回应。

这是实际结果:

  1. 我确实得到了 405 - Method not allowed 。非常好。
  2. 发送带有 Accept 的请求时标题为 text/xml只有我得到一个200 - OK响应,响应的内容类型为 text/xml即使该方法只产生 application/json .
  3. 发送内容类型为 text/xml 的请求时我得到一个200 - OK回应。

我可以补充一点,我在 Jersey 实现了所有这些,并且结果都是正确的。

最佳答案

在 Spring 3.2 中,行为与您所描述的一致,除了 2 之外,我得到的是 405(不允许方法)而不是 406。您能否确认您使用哪个版本的 Spring 进行这些测试?可以升级到至少 3.10+ 并再次确认此行为。

关于java - Spring MVC 请求映射传递不应该传递的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com