Springboot mvc开发之Rest风格及RESTful简化开发案例

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Springboot mvc开发之Rest风格及RESTful简化开发案例

REST开发

这个内容对以后开发中很重要吧

这个知识点有点欠缺

我们这边是一个知识加油站

是隶属于springboot mvc的一个小的细节

互联网上

风格简洁

Rest

是表现形式状态转换

访问网络资源的状态格式

传统风格是通过访问路径的方式实现在网页中的操作

也很少有这个课程

Rest风格描述形式简洁许多

我要访问user这个资源 id是1

我要访问user这个资源

所有的数据通过post提交的话

我们在外面是看不到数据的

我们通过调用行为进行区分

访问资源时有不同的行为动作

按照REST风格访问资源时使用行为动作区分对资源进行的何种操作

我们在postman中请求的方式有很多

我们通过一个路径和一个访问方式我们就可以确定一个资源的访问形式

REST只是一个风格

RESTFUL RESTful

只是一个建议 可以打破的

一种可以改变的思想

话没说的太满...

这个风格使用频率很高 从今往后 基本上都用这种风格进行开发

入门案例

我们先前的程序

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
public class UserController {
    /*
     * @ResponseBody注解是Spring框架中的一个注解,
     * 它用于标记在控制器方法上,
     * 表示该方法返回的对象将直接作为HTTP响应体返回给客户端,
     * 而不会经过视图解析器进行解析。
     * 通常用于RESTful风格的接口开发。
     * */
    @RequestMapping("/save")
    @ResponseBody
    public String save(@RequestBody User user){
        System.out.println("user save ... " + user);
        return "{'module':'user save'}";
    }
 
    @RequestMapping("/delete")
    @ResponseBody
    public String delete(Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
    /*
    * @RequestBody注解是Spring框架中的一个注解,
    * 它用于标记在控制器方法的参数上,
    * 表示该参数的值将从请求体中获取。
    * 通常在处理POST请求或PUT请求时,
    * 客户端会将请求数据以请求体的形式发送给服务器。
    * 而使用@RequestBody注解可以将请求体中的数据绑定到控制器方法的参数上,
    * 方便进行进一步的处理或者验证。
    * */
    @RequestMapping("/update")
    @ResponseBody
    public String update(@RequestBody User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @RequestMapping("/getById")
    @ResponseBody
    public String update(Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

视图解析器(View Resolver)是Spring框架中的一个组件,它主要用于将控制器方法返回的逻辑视图名解析为具体的视图对象。

在Spring MVC中,控制器方法通常返回一个字符串作为逻辑视图名,而不是直接返回一个视图对象。这个逻辑视图名表示了一个视图的标识符,通过视图解析器将其解析成一个具体的视图对象,最终呈现给用户。

视图解析器根据配置的规则和约定来查找和解析视图对象。它可以根据视图名称从不同的位置(如文件系统、类路径、数据库等)查找视图文件,并将其转换为对应的视图对象。一旦找到了相应的视图对象,就可以使用它来渲染并生成最终的响应。

@ResponseBody注解是Spring框架中的一个注解,它用于标记在控制器方法上,表示该方法返回的对象将直接作为HTTP响应体返回给客户端,而不会经过视图解析器进行解析。通常用于RESTful风格的接口开发。

使用@ResponseBody注解时,Spring会根据返回值的类型自动选择对应的HttpMessageConverter进行序列化处理。常见的HttpMessageConverter包括:MappingJackson2HttpMessageConverter(用于处理JSON格式)、StringHttpMessageConverter(用于处理字符串)、ByteArrayHttpMessageConverter(用于处理字节数组)等。

@RequestBody注解是Spring框架中的一个注解,它用于标记在控制器方法的参数上,表示该参数的值将从请求体中获取。

通常在处理POST请求或PUT请求时,客户端会将请求数据以请求体的形式发送给服务器。而使用@RequestBody注解可以将请求体中的数据绑定到控制器方法的参数上,方便进行进一步的处理或者验证。

我们通过postman向网站发起请求

之后获取了反馈

接下来我们改成Rest风格的

如果使用get请求提交是会报错的 提示不支持这种请求方式

控制台有反馈

全部改写

我们如果要传参可以通过路径变量的注解实现

{id}表示形参 @PathVariable 代表从路径里面取值

这两个是一对

在postman里发起DELETE请求就能获取响应结果

控制台也能反馈

前端应该发送的是json格式的数据

@responseBody注解将json转为了Javabean对象

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
 
@Controller
public class UserController {
 
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(){
        System.out.println("user save ... ");
        return "{'module':'user save'}";
    }
 
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
 
    @RequestMapping(value = "/users" ,method = RequestMethod.PUT)
    @ResponseBody
    public String update(@PathVariable User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @RequestMapping(value = "/users{id}",method = RequestMethod.GET)
    @ResponseBody
    public String update(@PathVariable Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

小结

根据请求行为去指定书写

请求的参数如果有路径变量

路径上有参数的占位 在形参上用注解的方式对应上

学到这里

后期大量的时间里

我们都会将数据封装成pojo然后通过字符串的方式

传递过去

RESTful简化开发

入门案例过于繁琐 可以简化

重复大量写的东西可以简化书写

设置统一请求路径

把ResponseBody注解提上去

整合注解

指定请求类型的注解

标准请求动作映射(4种)

这样就能简写

快速以RESTful风格开发

package com.bigdata1421.demo.controller;
 
import com.bigdata1421.demo.demos.web.User;
import org.springframework.web.bind.annotation.*;
 
@RestController
@RequestMapping("/users")
public class UserController {
 
   @PostMapping
    public String save(){
        System.out.println("user save ... ");
        return "{'module':'user save'}";
    }
 
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id){
        System.out.println("user delete ... " + id);
        return "{'module':'user delete'}";
    }
 
    @PutMapping
    public String update(@PathVariable User user){
        System.out.println("user update ... " + user);
        return "{'module':'user update'}";
    }
 
    @GetMapping ("/{id}")
    public String update(@PathVariable Integer id){
        System.out.println("user getById ... " + id);
        return "{'module':'user getById'}";
    }
}

小结

目录
打赏
0
2
2
0
38
分享
相关文章
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
80 0
|
17天前
|
基于SpringBoot的Redis开发实战教程
Redis在Spring Boot中的应用非常广泛,其高性能和灵活性使其成为构建高效分布式系统的理想选择。通过深入理解本文的内容,您可以更好地利用Redis的特性,为应用程序提供高效的缓存和消息处理能力。
122 79
20分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
本文介绍如何使用Spring Boot3与Vue2快速构建基于DeepSeek的AI对话系统。系统具备实时流式交互、Markdown内容渲染、前端安全防护等功能,采用响应式架构提升性能。后端以Spring Boot为核心,结合WebFlux和Lombok开发;前端使用Vue2配合WebSocket实现双向通信,并通过DOMPurify保障安全性。项目支持中文语义优化,API延迟低,成本可控,适合个人及企业应用。跟随教程,轻松开启AI应用开发之旅!
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
68 6
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
62 5
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
116 2
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
193 13
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
221 1
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
72 2

热门文章

最新文章