目录什么是RestController什么是Controller??使用ResponseBody注解让方法返回值作为响应内容是什么意思举例说明RestControllerController什么时候需要返回的是视图什么时候需要返回数据当设计 RESTful API 时一般的原则是下面是一些示例情况再以实例说明更通俗易懂的理解总结什么是RestController什么是Controller??? ? RestController和Controller是 Spring Framework 中用于定义控制器的注解。? ? **RestController**是一个组合注解它结合了Controller和ResponseBody注解的功能就相当于把两个注解组合在一起。在使用RestController注解标记的类中每个方法的返回值都会以 JSON 或 XML 的形式直接写入 HTTP 响应体中相当于在每个方法上都添加了ResponseBody注解。? ? **Controller**注解标记的类则是传统的控制器类。它用于处理客户端发起的请求并负责返回适当的视图View作为响应。在使用Controller注解的类中通常需要在方法上使用ResponseBody注解来指示该方法的返回值要作为响应的主体内容而不是解析为视图。简而言之RestController适用于构建 RESTful 风格的 API其中每个方法的返回值会直接序列化为 JSON 或 XML 数据并发送给客户端。而Controller适用于传统的 MVC 架构它负责处理请求并返回相应的视图。RestController下的方法默认返回的是数据格式Controller注解标注的类下面的方法默认返回的就是以视图为格式使用ResponseBody注解让方法返回值作为响应内容是什么意思在使用Controller注解标记的类中默认情况下方法的返回值会被解析为一个视图名称并寻找与该名称匹配的视图进行渲染。这意味着返回的结果会被解析为一个 HTML 页面或者模板引擎所需的数据。但是有时候需要将方法的返回值直接作为响应的主体内容而不是解析为视图。为了实现这个目的我们可以在方法上使用ResponseBody注解。??ResponseBody注解表示方法的返回值应该直接写入 HTTP 响应体中而不是被解析为视图。它告诉 Spring MVC 框架将方法的返回值序列化为特定格式如 JSON、XML 等并作为响应的主体内容返回给客户端。下面是一个使用Controller和ResponseBody的示例Controller RequestMapping(/hello) public class HelloController { GetMapping ResponseBody public String sayHello() { return Hello, World!; } }当客户端发起/hello的 GET 请求时sayHello()方法会返回一个字符串 “Hello, World!”。因为在方法上使用了ResponseBody注解返回值不会被解析为视图而是直接作为响应的主体内容返回给客户端。举例说明现在假设有一个简单的订单系统其中有一个功能是获取订单信息。我们来看如何使用RestController和Controller分别实现同一个功能RestControllerRestController RequestMapping(/orders) public class OrderController { GetMapping(/{id}) public Order getOrderById(PathVariable int id) { // 从数据库中获取订单信息 Order order orderService.getOrderById(id); return order; } }使用RestController注解标记类并在方法上使用GetMapping注解定义了一个 GET 请求的处理方法。方法的返回值是Order类型的对象它将会直接序列化为 JSON 格式的数据并作为 HTTP 响应的主体内容返回给客户端。ControllerController RequestMapping(/orders) public class OrderController { GetMapping(/{id}) ResponseBody public ModelAndView getOrderById(PathVariable int id) { // 从数据库中获取订单信息 Order order orderService.getOrderById(id); ModelAndView modelAndView new ModelAndView(order-details); modelAndView.addObject(order, order); return modelAndView; } }使用Controller注解标记类并在方法上使用GetMapping注解定义了一个 GET 请求的处理方法。方法的返回值是ModelAndView类型的对象它将包含要渲染的视图名称和需要传递给视图的数据。在方法上使用ResponseBody注解表示方法的返回值应该作为响应的主体内容而不是解析为视图。通俗一点说就是——有时候并不需要返回视图只需要一组数据这样在方法加上一个ResponseBody就可以让返回的格式转换为数据格式什么时候需要返回的是视图什么时候需要返回数据当设计 RESTful API 时一般的原则是如果客户端希望获取数据例如 JSON、XML则返回数据。如果客户端希望展示数据例如 HTML 页面则返回视图。下面是一些示例情况当你在开发一个单页应用的后端接口时前端通常会通过 Ajax 请求获取数据例如 JSON然后使用 JavaScript 动态更新页面。在这种情况下你应该返回数据例如使用ResponseBody注解。当你需要为前端渲染 HTML 页面时需要返回视图。视图可以包含动态生成的数据但最终会经过服务器端模板引擎的处理形成最终的 HTML 页面。再以实例说明更通俗易懂的理解需要返回视图的实例 假设你正在开发一个博客应用的后端接口。有一个页面需要显示所有文章的列表并且希望以 HTML 形式展示。在这种情况下你可以设计一个 GET 请求的接口/api/articles返回一个包含所有文章数据的视图让前端直接展示这个页面。这里需要返回视图而不是仅返回数据因为需要服务端渲染整个 HTML 页面。只需要返回数据的实例 假设正在开发一个电子商务网站前端使用 React 或 Vue.js 等框架构建。在购物车页面上需要获取当前用户的购物车数据以便展示。在这种情况下你可以设计一个 GET 请求的接口/api/cart返回一个 JSON 对象包含当前用户的购物车数据。这里只需要返回数据而不是整个 HTML 页面因为前端通过 JavaScript 来处理和展示数据。总结RestController是Controller和ResponseBody的组合注解用于创建 RESTful 风格的 API。RestController返回的数据会直接作为响应的主体内容JSON 或 XML不进行页面跳转或视图解析。Controller用于传统的 MVC 架构负责处理请求并返回视图作为响应。Controller方法通常需要配合ResponseBody注解才能将返回值作为响应的主体内容。传统的springMVC一般就需要直接返回视图而现在新兴的前端技术vue在项目中为前后端分离的架构前端框架负责处理数据和渲染页面而后端 API 则负责提供数据即可所以对返回视图的要求也就比较少了
DiskInfo:如何用现代化工具守护你的硬盘健康? 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo
你是否曾经历过电脑突然变慢、文件损坏甚至数据丢失的恐慌?这些问…
5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui
你是否曾为整理旅行照片时发现拍摄时间错乱而头疼?是否需要在数百张照片中批量…
更多请点击:
https://kaifayun.com
第一章:ChatGPT Plus订阅的合规性认知与服务边界界定 ChatGPT Plus 是 OpenAI 提供的付费订阅服务,其使用须严格遵循《OpenAI Terms of Use》《Acceptable Use Policy》及用户所在地的数据主权与内容监管…