springboot如何优雅的进行前后端通信

写在前面

对于初学者来说,困难的不是理论知识,而是如何在程序中具体实现。

现在的项目基本上都是前后端分离的项目,如何打通前后端,接收前端传过来的参数呢?

废话不多说,这篇文章就来说一说接收前端参数的具体操作

一、获取路径中的值

1.1 核心代码

less 复制代码
@GetMapping("/getArticle/{id}")
public Article getArticle(@PathVariable("id") Long id){
    System.out.println("获取到路径中的值为:"+id);
    return parmsService.findArticleById(id);
}

1.2 测试结果

在访问"http://localhost:8080/article/1" 时,程序会自动将URL中的模板变量{id} 绑定到通过@PathVariable注解的同名参数上,所以程序中可以获取到id=1

二、获取路径中的参数

2.1 核心代码

typescript 复制代码
@RequestMapping(value = "/addUser/",method = RequestMethod.POST)
public String addUser(String  name,String sex,int age){
    System.out.println("获取到参数中的值为:"+name+","+sex+","+age);
    return "添加文章成功";
}

2.2 测试结果

这里的参数和上面的不一样,这里的参数是通过"="隔开的,多个参数使用&分割。 例如测试例子中的"http://localhost:8080/?name=小凡&sex=男&age=18"

三、通过Bean接收对象参数

3.1 核心代码

typescript 复制代码
//①User
@Data
public class User {
    private  Integer id;
    private  String name;
    private String sex;
    private  Integer age;
}
​
​
//接收参数方法
@PostMapping("/addnewUser/")
public String addUser(User user){
    System.out.println(user);
    return  "添加用户成功";
}

3.2 测试结果

这里直接将前端传过来的参数映射到User 对象上

四、HttpServletRequest接收参数

4.1 核心代码

typescript 复制代码
@PostMapping("/addBook/")
public String addBook(HttpServletRequest request){
    String bookName = request.getParameter("bookName");
    String author = request.getParameter("author");
    System.out.println("获取到参数中的值为:"+bookName+","+author);
    return "添加书籍成功";
}

4.2 测试结果

五、用@RequestParam接收参数

5.1 核心代码

less 复制代码
@GetMapping("/getParams")
public String getParms(@RequestParam("param1") String  param1,@RequestParam("param2") String param2){
    System.out.println("获取到参数中的值为:"+param1+","+param2);
    return "Param1: " + param1 + ", parm2: " + param2;
}

5.2 测试结果

六、 用@RequestBody 接收json数据

6.1 核心代码

kotlin 复制代码
//① 定义User实体对象
@Data
public class User {
    private  Integer id;
    private  String name;
    private String sex;
    private  Integer age;
}
//② 接收参数
@PostMapping("/addUsers")
public List<User> addUsers(@RequestBody List<User> users){
    System.out.println(""+users);
    return users;
}

6.2 测试结果

七、接收文件 MultipartFile

7.1 核心代码

less 复制代码
@PostMapping("/singleFileUpload")
public String singleFileUpload(@RequestParam("file") MultipartFile file){
    //文件存储路径
    final String BASE_PATH = "E:\xiezhrspace\parm-demo\";
    if(file.isEmpty()){
        return "文件为空";
    }
    //获取文件名
    String fileName = file.getOriginalFilename();
​
    try {
        //新建一个文件路径
        File dest = new File(BASE_PATH + fileName);
        //判断路径是否存在,如果不存在就创建一个
        if(!dest.getParentFile().exists()){
            dest.getParentFile().mkdirs();
        }
        //将上传文件保存到一个目标文件当中
        file.transferTo(dest);
​
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "上传成功";
}

7.2 测试结果

以上就是本期全部内容,希望对您有所帮助,我们下期再见(●'◡'●)

相关推荐
曹牧2 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX2 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法3 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7253 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎3 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄3 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
忆~遂愿4 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds4 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化