我将以一个非常基本的hello world终结点为例
@RequestMapping("/hello") public String hello(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "helloworld"; }
如果我有此端点,并且希望能够转到/ hello并检索helloworld视图。
helloworld
/hello如果我传入诸如content-type之类的特定请求参数,是否可以使用SAME 路径将模型检索为json?
/hello
我不确定我理解你的意思。
如果您希望能够向发出请求/hello并获得具有不同内容类型的两个不同响应,那么可以。
@RequestMapping 将方法标识为请求处理程序,但它也提供了一些选项来限制应使用处理程序的时间。
@RequestMapping
在这种情况下,您应该Accept在HTTP请求中使用标头,并将其设置application/json为包含JSON text/html的响应和包含HTML的响应。
Accept
application/json
text/html
然后,您可以使用两种@RequestMapping方法
@RequestMapping(value = "/hello", produces = "application/json") public SomeType handleJson() {...} @RequestMapping(value = "/hello", produces = "text/html") public String handleHtml() {...}
Spring将根据请求的Accept标头和方法的produces值确定要使用的方法。
produces