gpt4 book ai didi

java - @RequestMapping 没有 @ResponseBody 的不同行为

转载 作者:行者123 更新时间:2023-12-01 16:20:46 24 4
gpt4 key购买 nike

我有一个简单的 Controller 类,公开两个休息端点。

删除 @ResponseBody 将为两个端点提供不同的行为。

如果从 testRest 方法中删除 - 输出 =

"1..name"
"1..name..name"
"1..name..name..name"

依此类推,最后抛出Stackoverflow异常

如果从 testSimple 方法中删除 - 无异常输出是“Test simple”,对 Postman 的响应是:-

{
"timestamp": "2020-06-09T17:20:02.511+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/testSimple"
}

代码是:-

package com.search.catalog.rest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

@RequestMapping(value="/test/{id}", method = RequestMethod.GET)
@ResponseBody
public String testRest(@PathVariable String id, @RequestParam String name) {

System.out.println(id + ".." + name);

return "result is " + id+ ".." + name;
}



@RequestMapping(value="/testSimple", method = RequestMethod.GET)
@ResponseBody
public String testSimple() {

System.out.println("Test Simple ");

return "Test Simple ";
}
}

最佳答案

如果没有@ResponseBody,spring会查找ViewResolver,并且由于您没有声明任何内容,所以spring将使用默认的InternalResourceViewResolver

通过调用../test/1?name="name",您正在经历循环 View 路径。即尝试替换return“结果是”+ id + ".."+ name; with return "result is "; in testRest().

Answer@Sotirios Delimanolis 给出的内容将为圆形 View 路径提供更多信息。

但是如果您使用 ../test/1/?name="name" 那么您将不会遇到此问题。

希望这对您有帮助。

关于java - @RequestMapping 没有 @ResponseBody 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com