从前端Vue到后端Spring Boot:接收JSON数据的正确姿势

简介: 从前端Vue到后端Spring Boot:接收JSON数据的正确姿势

在现代Web开发中,前后端分离已成为一种趋势,Vue和Spring Boot也成为了其中最流行的前后端框架。在Vue前端向Spring Boot后端发送数据时,常常需要将数据转换为JSON格式,然后在后端接收和处理数据。然而,由于JSON数据的格式多种多样,而Java对象的定义也可能存在问题,因此在接收和处理JSON数据时,可能会遇到各种各样的错误和问题。本文将从前端Vue到后端Spring Boot,详细介绍接收JSON数据的正确姿势,帮助开发人员更好地处理JSON数据。

一、前端Vue发送JSON数据

在前端Vue中,发送JSON数据可以使用axios库。axios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js。它支持所有现代浏览器和IE9+(包括IE9)。

首先,需要在Vue项目中安装axios库:

npm install axios

然后,在Vue组件中使用axios发送POST请求,并将数据转换为JSON格式:

import axios from 'axios';
export default {
  data() {
    return {
      user: {
        name: '',
        age: 0,
        gender: ''
      }
    }
  },
  methods: {
    submitData() {
      axios.post('/api/user', JSON.stringify(this.user), {
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then(response => {
        console.log(response.data);
      })
      .catch(error => {
        console.error(error);
      });
    }
  }
}

在上面的代码中,我们使用axios.post方法发送POST请求,并将this.user对象转换为JSON格式,然后将其作为请求主体发送到后端。注意,我们需要设置请求头Content-Typeapplication/json,以告诉后端请求主体的格式为JSON。

二、后端Spring Boot接收JSON数据

在后端Spring Boot中,接收JSON数据需要使用@RequestBody注解。@RequestBody注解用于将HTTP请求主体映射到一个对象中,并且可以自动将JSON数据转换为Java对象。下面是一个接收JSON数据的示例:

@RestController
@RequestMapping("/api")
public class UserController {
    
    @PostMapping("/user")
    public User createUser(@RequestBody User user) {
        System.out.println(user);
        return user;
    }
    
}

在上面的代码中,我们定义了一个UserController类,并在其中定义了一个createUser方法。该方法使用@PostMapping注解来指定处理POST请求,请求路径为/api/user。在方法参数中,我们使用@RequestBody注解将HTTP请求主体映射到一个User对象中。当Spring Boot接收到请求时,它会自动将JSON数据转换为User对象,并将其作为参数传递给createUser方法。

三、常见错误和问题

在接收JSON数据时,可能会遇到各种各样的错误和问题。下面是一些常见的错误和问题以及解决方法。

  1. JSON数据格式不正确

当JSON数据格式不正确时,Spring Boot会抛出HttpMessageNotReadableException异常。这通常是由于JSON数据中缺少必要的属性或属性值不正确导致的。解决方法是检查JSON数据格式是否正确,并确保它与Java对象匹配。

{
  "name": "John",
  "age": 30,
  "email": "john@example.com"
}

如果Java对象定义了一个phoneNumber属性,但是JSON数据中没有该属性,则在使用@RequestBody注解接收该JSON数据时,Spring Boot会抛出HttpMessageNotReadableException异常,因为JSON数据格式不正确。

  1. Java对象定义错误

当Java对象定义错误时,Spring Boot会抛出HttpMessageConversionException异常。这通常是由于Java对象中缺少必要的属性或属性类型不正确导致的。解决方法是检查Java对象的定义是否正确,并确保它与JSON数据匹配。

public class User {
  private String name;
  private int age;
  private String email;
  private int phoneNumber; // 应该是String类型
  // getter和setter方法
}

如果JSON数据中包含一个phoneNumber属性,但是Java对象中定义的phoneNumber属性类型为int,则在使用@RequestBody注解接收该JSON数据时,Spring Boot会抛出HttpMessageConversionException异常,因为Java对象定义错误。

  1. 控制器中使用了多个@RequestBody注解

在控制器中,只能使用一个@RequestBody注解来接收HTTP请求主体。如果使用多个@RequestBody注解,Spring Boot会抛出IllegalStateException异常。解决方法是将请求主体中的数据组合到一个对象中,然后使用一个@RequestBody注解来接收该对象。

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user, @RequestBody Address address) {
    // do something with user and address
    return ResponseEntity.ok(user);
}

如果在控制器中使用多个@RequestBody注解,Spring Boot会抛出IllegalStateException异常。解决方法是将请求主体中的数据组合到一个对象中,然后使用一个@RequestBody注解来接收该对象。例如:

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody CreateUserRequest request) {
    User user = request.getUser();
    Address address = request.getAddress();
    // do something with user and address
    return ResponseEntity.ok(user);
}
public class CreateUserRequest {
    private User user;
    private Address address;
    // getters and setters
}

四、总结

在现代Web开发中,前后端分离已成为一种趋势,Vue和Spring Boot也成为了其中最流行的前后端框架。在Vue前端向Spring Boot后端发送数据时,常常需要将数据转换为JSON格式,然后在后端接收和处理数据。在接收和处理JSON数据时,可能会遇到各种各样的错误和问题。本文从前端Vue到后端Spring Boot,详细介绍了接收JSON数据的正确姿势,帮助开发人员更好地处理JSON数据。


目录
相关文章
|
5月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
6241 89
|
6月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
457 2
|
5月前
|
NoSQL Java 数据库连接
《深入理解Spring》Spring Data——数据访问的统一抽象与极致简化
Spring Data通过Repository抽象和方法名派生查询,简化数据访问层开发,告别冗余CRUD代码。支持JPA、MongoDB、Redis等多种存储,统一编程模型,提升开发效率与架构灵活性,是Java开发者必备利器。(238字)
|
10月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
951 1
|
12月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult&lt;T&gt;`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码&quot;0&quot;和消息&quot;操作成功!&quot;,有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
889 0
|
12月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 &quot;&quot;,Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
608 0
|
11月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
621 70
|
8月前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
743 3
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
1281 14
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
529 0

热门文章

最新文章