小编典典

Spring MVC在端点上使用相同的路径返回不同的内容?

java

我将以一个非常基本的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视图。

/hello如果我传入诸如content-type之类的特定请求参数,是否可以使用SAME 路径将模型检索为json?


阅读 269

收藏
2020-11-26

共1个答案

小编典典

我不确定我理解你的意思。

如果您希望能够向发出请求/hello并获得具有不同内容类型的两个不同响应,那么可以。

@RequestMapping 将方法标识为请求处理程序,但它也提供了一些选项来限制应使用处理程序的时间。

在这种情况下,您应该Accept在HTTP请求中使用标头,并将其设置application/json为包含JSON
text/html的响应和包含HTML的响应。

然后,您可以使用两种@RequestMapping方法

@RequestMapping(value = "/hello", produces = "application/json")
public SomeType handleJson() {...}

@RequestMapping(value = "/hello", produces = "text/html")
public String handleHtml() {...}

Spring将根据请求的Accept标头和方法的produces值确定要使用的方法。

2020-11-26