【发布时间】: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