我有一个spring boot应用程序,其中正在创建带有@Controller
注释的控制器,当我尝试使用url访问资源时,它向我显示404, "not found"
。但是,只要在类级别或方法级别添加注释@ResponseBody
,它就会为我提供所需的输出。我想在这里了解@Responsebody
的作用,为什么它影响URL标识。据我了解,@ResponseBody
处理这些响应。
当我有如下代码时-
@Controller
@RequestMapping(value = "test")
public class TestController {
@RequestMapping(value = "/m1")
public @ResponseBody String testMethod(){
return "Hello First Application";
}
}
它给我的确切输出为Hello First Application
当我从方法@ResponseBody
中删除testMethod()
时,会得到以下输出。
{
"timestamp": "2019-06-13T06:36:14.510+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/test/m1"
}
我期望一个字符串作为响应。
答案 0 :(得分:0)
此链接可能会解释您的需求: multer
基本上,注释告诉控制器对象格式正确。 @Controller
通常用于返回视图,@RestController
用于JSON,并且不再需要@ResponseBody
。
答案 1 :(得分:0)
这取决于您的视图分辨率。只需验证您为项目指定的默认视图分辨率即可。
没有ResponseBody,spring尝试解析不存在的视图匹配字符串“ hello ...”。
如果使用ResponseBody,则将返回值序列化并写入HTTP响应 请参阅https://www.baeldung.com/spring-request-response-body