1

spring boot | @RestController

 1 year ago
source link: https://benpaodewoniu.github.io/2022/11/17/spring15/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

spring boot | @RestController

开发 RESTful API 时,一般都会在 Controller 上加上 @Controller 注解,但是有时候加上@RestController

@RestController 注解等价于@ResponseBody + @Controller

@RestController@Controller 的共同点是都用来表示Spring某个类是否可以接收HTTP请求,二者区别:

  • @RestController无法返回指定页面,而@Controller可以
    • 对于Controller, 如果只是使用@RestController注解,则其方法无法返回指定页面,此时配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是 return 里的内容。 如果需要返回到指定页面,则需要用 @Controller 配合视图解析器 InternalResourceViewResolver 才行。
  • 前者可以直接返回数据,后者需要@ResponseBody辅助。
    • 如果需要返回JSONXML或自定义mediaType内容到页面,@RestController自己就可以搞定,这个注解对于返回数据比较方便,因为它会自动将对象实体转换为JSON格式。而@Controller需要在对应的方法加上@ResponseBody注解。

RestController

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/difference")
public class DifferenceController {

// 跳转到上传文件的页面
@RequestMapping(value = "/goToSuccessPage", method = RequestMethod.GET)
public String goToSuccessPage() {
// 跳转到 视图层 success.html失败
return "success";
}

@RequestMapping(value = "findAll", method = RequestMethod.GET)
public Map<String, String> findAll() {
Map<String, String> all = new HashMap<>();
all.put("remark", "可以返回json,xml或自定义mediaType内容到页面");
return all;
}
}

Controller

@Controller
@RequestMapping("/login")
public class LoginController {


@GetMapping(value = "/login")
public String login() {
// 跳转到 视图层 login.html
return "login";
}
@RequestMapping(value = "/getJson", method = RequestMethod.GET)
@ResponseBody
public Map<String, String> getJson() {
Map<String, String> all = new HashMap<>();
all.put("remark", "结合注解 @ResponseBody 返回接送");
return all;
}
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK