@RestController的理解

@RestControlle=@ResponseBody+@Controller

@ResponseBody

表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据或接口交互时使用,用于构建RESTful的api。一般情况下会将返回的类转为Json字符串的形式返回给客户端。如果返回的类型的String类型,那么返回的还是String型

@Controller

将被修饰的类被实例化并注入Spring IOC容器中。语义化的作用,即代表该类是充当Controller的作用。一般由该类(控制器)负责将用户发来的URL请求转发到对应的服务接口(service层)。

@RestController和@Controller区别

(1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
(2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

例子:

(1)使用@RestController注解

@RestController
public class HelloController {
    @RequestMapping(value="/hello")
    public String Hello(){
        return "hello world";
    }
}

(2)使用@Controller和@ResponseBody注解

@Controller
@ResponseBody
public class HelloController {
    @RequestMapping(value="/hello")
    public String Hello(){
        return "hello world!!!";
    }
}

在例子(1)中,如果把@RestController改成@Controller,当在浏览器输入/hello的时候,会报错,因为当只用@Controller修饰的时候,Spring以为会返回一个View(Spring MVC中的V),但是返回的是一个Map。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `@RestController` 是一个注解,它是 Spring 框架中的一部分。它用于将一个类标记为处理 HTTP 请求的控制器。与传统的 Spring MVC 控制器不同,`@RestController` 控制器只返回数据而不是视图。它通常用于构建 RESTful API 服务。在使用 `@RestController` 注解时,Spring 会自动将返回的数据序列化为 JSON 或 XML 格式,以便客户端能够理解。 ### 回答2: @RestController是Spring框架中的一个注解,用于将一个类标记为一个Web API控制器。与@Controller注解不同的是,@RestController注解会自动将控制器返回的对象转换为JSON或XML格式的响应,而不再需要使用@ResponseBody注解来指定返回的数据格式。 @RestController注解的作用是将控制器类中的每个方法的返回值直接写入HTTP响应体中,通常用于构建RESTful风格的API。该注解的使用场景包括创建用于处理HTTP请求的接口,以及构建前后端分离的应用程序。 使用@RestController注解的类中的方法可以使用各种请求映射注解(例如@GetMapping、@PostMapping等)来指定该方法对应的URL路径和请求方法。在方法内部,可以通过方法参数来获取请求的参数、请求头信息等。方法的返回值可以是任何Java对象,Spring会自动将返回值转换为对应的数据格式作为HTTP响应返回给客户端。 总之,@RestController是一个非常有用的注解,可以帮助开发人员更轻松地构建RESTful风格的API,并自动处理数据转换和HTTP响应等繁琐的细节,提高了开发效率。 ### 回答3: @RestController 是 Spring 框架中的一个注解,用于在类上标识为一个 RESTful 接口。它结合了 @Controller 和 @ResponseBody 两个注解的功能。 @RestController 注解用来指示该类是一个在 RESTful 架构中扮演 Controller 的组件。它相当于@Controller 和 @ResponseBody 注解的组合。在 Spring MVC 中,@Controller 用于定义 Controller 类,而 @ResponseBody 用于将方法的返回值直接写入到 HTTP 响应体中。因此,@RestController 的作用就是将一个类标记为 Controller 类,并将其返回值直接写入到响应体中,而不是通过模板引擎处理后再返回页面。 使用 @RestController 可以使得编写 RESTful 接口更加方便。通过该注解,我们可以直接在方法上使用 @RequestMapping 等注解来处理请求,并将处理后的数据直接以 JSON 或 XML 的形式返回给客户端。这样做不仅减少了开发的工作量,还能提高接口的响应速度和扩展性。 另外,@RestController 还支持通过 PathVariable、RequestParam 等注解来处理请求参数,可以根据实际需求来灵活定义接口。通过 @RestController 标记的类,配合其他 Spring 框架中的注解和功能,我们可以很方便地构建出符合 RESTful 设计原则的接口,提供给客户端进行调用。 总之,@RestController 是 Spring 框架中用于标记 RESTful 接口的注解。通过它,我们可以更加方便地开发出符合 RESTful 设计原则的接口,并将数据以 JSON 或 XML 的形式返回给客户端,提高接口的响应速度和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值