【问题标题】:invalid content-type returning 404 rather than 406 in spring mvc RESTful controllerspring mvc RESTful控制器中返回404而不是406的无效内容类型
【发布时间】:2013-12-26 18:56:06
【问题描述】:

我正在使用 Spring 3.0.5 创建一个 RESTful 控制器。我已经指定了我愿意接受的内容类型,但发现如果发送的请求带有其他内容,我会收到 404 而不是预期的 406。有人可以指出我遗漏了什么吗?

@Controller
@RequestMapping("/hello")
public class HelloWorldController {

    @RequestMapping(value="/{name}", method=RequestMethod.GET, headers="accept=application/json")
public @ResponseBody Map<String, String> sayHello(@PathVariable("name") String username) {
    Map<String,String> result = new HashMap<String,String>();
    result.put("greeting", "Hello "+username);
    return result;
}
}

如果我发送标头为“accept=application/json”的请求,一切正常。但是,带有“accept="text/xml" 标头的请求会返回 404。

谢谢!

--约翰

【问题讨论】:

  • 让我们看看您在哪里(哪个 URL)发出请求以及使用什么标头。你的控制器也有自己的@RequestMapping吗?
  • URL 类似于:localhost:8080/aurora/hello/jcc,标题为 accept=text/xml。控制器确实有它自己的 RequestMapping,例如@Controller @RequestMapping("/hello") public class HelloWorldController {...}
  • 我可能错了,但我相信这可能是 3.0 版本中的问题/错误,在 3.1+ 中已修复/更改。您可以升级并重试吗?
  • 谢谢 Sotirios,好像是这样。我升级到 Spring 3.2.6,现在看到了我期望的行为。

标签: rest spring-mvc


【解决方案1】:

这是我的评论,作为完整性的答案。

我建议您升级到 3.1 或更高版本。这些处理程序处理问题似乎已得到修复。

相关问题:https://jira.springsource.org/browse/SPR-10085

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2020-11-21
    • 2018-11-11
    相关资源
    最近更新 更多