Spring MVC控制器返回视图或JSON

时间:2018-06-18 17:36:45

标签: spring spring-mvc

Spring Controller中的方法是否可以根据某些条件返回JSON或视图?

有人可以分享一些例子。

此致 尔汉

1 个答案:

答案 0 :(得分:0)

以下是其中一个解决方案:您可以在Controller中使用两种方法,一种使用@ResponseBody注释并返回一个JSON值,另一种经典方法返回ModelAndView

两种方法都可以使用具有不同参数(查询或标头参数)的相同http端点。在我看来,将请求路由到预期格式的更简洁方法是使用Content-Type标头,其中包含以下值:text/htmlapplication/json(或路径扩展名{{1} }或.html但我更喜欢标题解决方案。)

为此,您可以使用.json注释的consumes属性:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

更好的设计是将@RequestMapping注释类中返回JSON的方法与真正的restfull端点分开,将你的经典MVC方法与{{1中通常不利于SEO的非RESTfull端点)分开仅为MVC保留的带注释的类(并且两个控制器的系列都可以在不显示http端点的@RestController带注释的类中使用相同的业务逻辑。)

如果您真的想使用单一方法并在某些条件下确定输出的格式,我认为这对您的http客户端来说是一个非常糟糕的设计,但仍然可以使用ViewResolvers {{3}在评论中建议。