当前位置: 首页 > 面试题库 >

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

呼延珂
2023-03-14
问题内容

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


问题答案:

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

如果您希望能够向发出请求/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值确定要使用的方法。



 类似资料:
  • 我将使用一个非常基本的hello worldendpoint作为示例 如果我有这个endpoint,并且我希望能够 /hello并检索视图。 如果传入特定的请求参数(如内容类型),是否可以使用相同的路径以json的形式检索模型?

  • 我试图从绑定到xml的treeview中获取所选节点,其中使用的xml显示了以下特性,重复了许多同名节点 在SseltedNodeChanged函数中我写了: 但每当我单击Treeview节点时,它只选择第一个团队元素。 例如:每当我单击这两个节点,我总是在SseltedNode中获得First Team元素。数据路径 我已经阅读了很多堆栈溢出解决方案,但是我不想在Xpath中传递参数,我想通过从

  • 问题内容: 我正在尝试使用单独的路线,但在我的React App中添加/编辑表单的组件相同,如下所示: 现在,在manageClient组件中,我解析查询参数(我在编辑路由中传递带有客户端ID的查询字符串),并根据传递的查询参数有条件地进行渲染。 问题在于这不会再次重新安装整个组件。假设打开了一个编辑页面,并且用户单击添加组件,URL发生了更改,但是该组件没有重新加载,因此保留在编辑页面上。 有办

  • 本文向大家介绍ASP的Server.MapPath()不同参数返回路径总结,包括了ASP的Server.MapPath()不同参数返回路径总结的使用技巧和注意事项,需要的朋友参考一下 在使用Server.MapPath()的时候,有很多的参数,什么绝对路径啊,相对路径啊,这些不复杂但是很容易弄混淆的东西,这里将他做一个整理。 如果当前的网站目录为E:\wwwroot 应用程序虚拟目录为E:\www

  • 让我们假设一个后端应用程序,它公开了一些Rest API,运行在地址192.168.1.10:8889的Jetty网络服务器上。 我希望有一个前端应用程序(仅限于html/javascript,在apache2 Web服务器上)在相同的IP上运行,但在不同的端口(例如8000)上运行,它应该使用后端应用程序公开的API。 我怎样才能让这个架构工作而不进入“No'Access-Control-All

  • 问题内容: 在IE7,IE8和Firefox上设置属性并返回不同的值: IE 8: IE 7: 火狐: 为什么存在这种差异? 在不使用jQuery的情况下,是否存在跨不同浏览器(IE8,IE7,Firefox)一致的等效属性? 问题答案: 这与浏览器的盒子模型有关。使用jQuery或其他JavaScript抽象库之类的东西来规范DOM模型。