【问题标题】:Spring MVC controller to return view or JSONSpring MVC 控制器返回视图或 JSON
【发布时间】:2018-06-19 02:57:09
【问题描述】:

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

有人可以分享例子吗?

问候, 法尔汉

【问题讨论】:

标签: spring spring-mvc


【解决方案1】:

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

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

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

更好的设计是在@RestController 注释类中将返回JSON 的方法与真正的restfull 端点和您的经典MVC 方法与@Controller 注释类中的非restfull 端点(通常对SEO 不利)分开仅为 MVC 保留(并且两个控制器系列都可以在 @Service 注释类中使用相同的业务逻辑,这些类不公开 http 端点)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    相关资源
    最近更新 更多