json请求 post vue_Spring Boot+Vueaxios异步请求数据的12种操作(上篇)

0a2d01fcc21f218be1698ec0d6725c1e.png  Java大联盟

  致力于最高效的Java学习

关注

bd650cef8a16e2fdd522511e0470f335.gif

Spring Boot + Vue 前后端分离最核心的操作就是通过异步请求完成数据同步,这其中又可以分为很多种不同的情况,比如是 GET 请求还是 POST 请求?参数是普通变量还是 JSON?基于 RESTful 架构如何操作等等,今天楠哥就把这些不同的请求方式做了一个汇总,一次性写清楚,以后需要用的时候直接来查这篇文章即可。前后端分离异步请求共包含以下 12 种情况:1、GET 请求 + 普遍变量传参2、GET 请求 + JSON 传参3、PSOT 请求 + 普遍变量传参4、POST 请求 + JSON 传参5、基于 RESTful 的 GET 请求 + 普遍变量传参6、基于 RESTful 的 GET 请求 + JSON 传参7、基于 RESTful 的 PSOT 请求 + 普遍变量传参8、基于 RESTful 的 POST 请求 + JSON 传参9、基于 RESTful 的 PUT 请求 + 普遍变量传参10、基于 RESTful 的 PUT 请求 + JSON 传参11、基于 RESTful 的 DELETE 请求 + 普遍变量传参12、基于 RESTful 的 DELETE 请求 + JSON 传参Vue 中异步请求使用 axios 组件来完成,axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,可以用在浏览器和 node.js 中。Vue 工程中使用 axios,首先要安装 axios,命令如下所示。
npm install axios
然后创建 Vue 工程,手动导入 axios 组件,命令如下所示。
vue add axios
Vue 环境搭建好之后,创建 Spring Boot 工程,之后就可以分别完成前后端代码的开发。1、GET 请求 + 普遍变量传参axios 异步 GET 请求的方法为 axios.get(url,params).then()url:请求的 URL。params:参数,格式为 {params:{name:value,name:value}}then():请求成功的回调函数。Vue 代码如下所示。
<template>    <div>        <button type="button" @click="getData()">getDatabutton><br/>    div>template><script>    export default {        methods: {            getData(){                const _this = this                axios.get('http://localhost:8181/getData',{params:{id:1,name:'张三'}}).then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
Spring Boot 代码如下所示。
@RestControllerpublic class DataHandler {    @GetMapping("/getData")    public String getData(Integer id,String name){        System.out.println(id);        System.out.println(name);        return id+name;    }}
分别启动 Vue 和 Spring Boot,点击 getData按钮,结果如下图所示。

2e2e4f3ebc4ea7a194d7026050fd98b4.png

这是前后端分离开发最常见的错误:跨域。当请求不在同一域名下的资源文件时,浏览器限制了此类请求,导致报错,这就是跨域问题,如何解决呢?可以在前端应用中处理,也可以在后端应用中进行处理,这里我们选择在 Spring Boot 中处理,方法非常简单,只需要添加一个 Configuration 即可,具体代码如下所示。
@Configurationpublic class CorsConfig implements WebMvcConfigurer {    @Override    public void addCorsMappings(CorsRegistry registry) {        registry.addMapping("/**")                .allowedOrigins("*")                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")                .allowCredentials(true)                .maxAge(3600)                .allowedHeaders("*");    }}
再次启动 Spring Boot,点击 getData按钮,结果如下图所示。

54d7e41ae1ccc28637f26ff235ed26ae.png

点击 getData按钮之后,客户端输出了后端服务返回的数据,axios 请求调用成功。2、GET 请求 + JSON 传参Vue 代码如下所示。
<template>    <div>        <button type="button" @click="getJSON()">getJSONbutton><br/>    div>template><script>    export default {        methods: {            getJSON(){                const _this = this                var user = {                    id:1,                    name:'张三'                }                axios.get('http://localhost:8181/getJSON',{params:user}).then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
Spring Boot 代码如下所示。
@Datapublic class User {    private Integer id;    private String name;}
@GetMapping("/getJSON")public User getJSON(User user){    System.out.println(user);    return user;}
分别启动 Vue 和 Spring Boot,点击 getJSON按钮,结果如下图所示。

6f0a898e3d4e52c8bdbeb44a77ed8fbf.png

3、PSOT 请求 + 普遍变量传参axios 异步 POST 请求的方法为 axios.post(url,params).then()url:请求的 URLparams:参数,POST 请求中,参数格式不再是  {params:{name:value,name:value}} ,而需要将参数封装到URLSearchParams 对象中。then():请求成功的回调函数。Vue 代码如下所示。
<template>    <div>        <button type="button" @click="postData()">postDatabutton><br/>    div>template><script>    export default {        methods: {            postData(){                const _this = this                var params = new URLSearchParams()                params.append('id', '1')                params.append('name', '张三')                axios.post('http://localhost:8181/postData',params).then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
Spring Boot 代码如下所示。
@PostMapping("/postData")public User postData(Integer id,String name){    System.out.println(id);    System.out.println(name);    return new User(id,name);}
‍分别启动 Vue 和 Spring Boot,点击 postData按钮,结果如下图所示。

c9e47452fb3509453c6d37feac465b93.png

4、PSOT 请求 + JSON 传参params 同样需要将 JSON 对象封装到 URLSearchParams 中,Vue 代码如下所示。
<template>    <div>        <button type="button" @click="postJSON()">postJSONbutton><br/>    div>template><script>    export default {        methods: {            postJSON(){                const _this = this                var params = new URLSearchParams()                params.append('id', '1')                params.append('name', '张三')                axios.post('http://localhost:8181/postJSON',params).then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
Spring Boot 代码如下所示。
@PostMapping("/postJSON")public User postJSON(User user){    System.out.println(user);    return new User(1,"张三");}
分别启动 Vue 和 Spring Boot,点击 postJSON按钮,结果如下图所示。

a65a5814242b0059b159e682f92a10dc.png

5、基于 RESTful GET 请求 + 普遍变量传参基于 RESTful 的 axios 异步 GET 请求的方法为 axios.gett(url).then()url:请求的 URL,直接追加参数。then():请求成功的回调函数。Vue 代码如下所示。
<template>    <div>        <button type="button" @click="restGetData()">restGetDatabutton><br/>    div>template><script>    export default {        methods: {            restGetData(){                const _this = this                axios.get('http://localhost:8181/restGetData/1').then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
Spring Boot 代码如下所示。
@GetMapping("/restGetData/{id}")public User restGetData(@PathVariable("id") Integer id){    System.out.println(id);    return new User(1,"张三");}
分别启动 Vue 和 Spring Boot,点击 restGetData按钮,结果如下图所示。

73ca8a4deb3f9e8c1b191de8a6e6d4e5.png

6、基于 RESTful GET 请求 + JSON 传参基于 RESTful 的 axios 异步 GET 请求的方法为 axios.get(url,params).then()url:请求的 URL。params:参数,格式为  {params:{name:value,name:value}} 。then():请求成功的回调函数。Vue 代码如下所示。
<template>    <div>        <button type="button" @click="restGetJSON()">restGetJSONbutton><br/>    div>template><script>    export default {        methods: {            restGetJSON(){                const _this = this                axios.get('http://localhost:8181/restGetJSON',{params:{id:1,name:'张三'}}).then(function (resp) {                    console.log(resp.data)                })            }        }    }script>
‍Spring Boot 代码如下所示。
@GetMapping("/restGetJSON")public User restGetJSON(User user){    System.out.println(user);    return new User(1,"张三");}
分别启动 Vue 和 Spring Boot,点击 restGetJSON按钮,结果如下图所示。

8a055cf496292dd0c8125218c5594054.png

‍以上就是 axios 异步请求数据的 6 种形式,你都学会了吗? 

推荐阅读

1、快速上手Spring Boot+Vue前后端分离

2、Vue+Element UI搭建后台管理系统界面

3、一文搞懂前后端分离

4、徒手撸一个Spring MVC框架

da9d4226ab4232fd53e197502b597f0b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WebRTC---源码篇】(十三)WebRTC/Pacer

pacer作用 NextSendTime Timestamp PacingController::NextSendTime() const {Timestamp now = CurrentTime();if (paused_) {return last_send_time_ + kPausedProcessInterval;}// If probing is active, that always takes priority.if (prober_.IsProbing()) {Timest…

全景视觉空间直线检测_视觉SLAM深度解读

近年来&#xff0c;SLAM技术取得了惊人的发展&#xff0c;领先一步的激光SLAM已成熟的应用于各大场景中&#xff0c;视觉SLAM虽在落地应用上不及激光SLAM&#xff0c;但也是目前研究的一大热点&#xff0c;今天我们就来详细聊聊视觉SLAM的那些事儿。视觉SLAM是什么&#xff1f;…

对象必须实现 iconvertible。_java面向对象最全入门笔记(通俗易懂,适合初学者)...

前言:面向对象的三大特征封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)编程思想&#xff1a;面向过程&#xff1a;做某件事情都需要自己亲历亲为&#xff0c;按照步骤去完成面向对象&#xff1a;做某件事情不需要自己亲历亲为&#xff0c;只需指定特定的对象去完…

HH SaaS电商系统的结算系统设计

文章目录一、第三方卖家销售货款结算流程说明&#xff1a;销售货款结算逻辑流程图预期收入如何统计二、第三方卖家推广分销佣金结算佣金结算逻辑流程图逾期佣金收入如何统计三、采购货款结算租户采购货款结算流程说明商城采购货款结算流程说明店铺商家的采购货款结算流程说明四…

postgresql删除索引_PostgreSQL 13 发布,索引和查找有重大改进

9月24日&#xff0c;PostgreSQL全球开发组宣布PostgreSQL 13正式发布&#xff0c;作为世界上使用最多的开源数据库之一&#xff0c;PostgresSQL 13是目前的最新版本。PostgreSQL 13 在索引和查找方面进行了重大改进&#xff0c;有利于大型数据库系统&#xff0c;改进包括索引的…

【WebRTC---源码篇】(十六)WebRTC/NetEQ

WebRTC【4096版本】 NetEQ的作用 进行抖动控制和丢包隐藏,通过该技术可以让音频更平滑 NetEQ插入packet数据 int NetEqImpl::InsertPacketInternal(const RTPHeader& rtp_header,rtc::ArrayView<const uint8_t> payload) {//如果有效荷载payload为空if (paylo…

HH SaaS电商系统的销售订单设计

文章目录订单销售类型订单优惠优惠方式子订单优惠金额订单拆单订单发货销售订单拆单逻辑图销售订单的信息结构相关实体订单运营类型&#xff08;作废&#xff09;售后截止时间订单状态状态机的设计不同属性组合下的订单状态组合1&#xff1a;实物线上非预售非定制非拼单快递组合…

kafka netty_惠而浦:使用Netty和Kafka的微服务

kafka netty介绍 在上一个博客中 &#xff0c;我介绍了Netty用作Web服务器。 该示例运行良好……只要需要广播服务器即可。 大多数情况下不是很有用。 更有可能的是&#xff0c;每个客户端仅接收针对其的数据&#xff0c;并保留了特殊情况下的广播&#xff0c;例如“服务器在1…

HH SaaS电商系统的拼团系统设计

文章目录拼团业务流程拼团单实体拼团单的状态拼团型订单的销售状态注意点拼团业务流程 创建活动 管理后台创建拼团活动&#xff0c;设置好活动有效期、成团人数、成团时效、限购数量、活动对象、添加活动商品&#xff0c;设置团长价和团员价&#xff0c;活动开始后活动对象在买…

统信uos系统考试题_离Windows更近一步!微信Linux原生版上线:国产统信UOS系统已适配...

就在本月11号&#xff0c;国产操作系统-统信 UOS发布了专业版 V20(1030)&#xff0c;功能更强大&#xff0c;同时性能和安全性均有所提升。而距离这个好消息过去没多久&#xff0c;统信软件官方再次发布了一个好消息&#xff1a;那就是微信桌面客户端(统信 UOS 版)研发完成&…

npm 引用子项目模块_Java / Web项目中的NPM模块Browser-Sync

npm 引用子项目模块Browser-Sync是一个方便的基于Node.js的NPM模块&#xff0c;可用于更快的Web开发。 浏览器同步可在许多设备之间同步文件更改和交互。 最重要的功能是实时重新加载。 我们也可以在Java / Web项目中使用Browser-Sync。 Cagatay Civici创造了一个伟大的 视频教…

xrd精修教程_XRD精修系列干货 | 带你领略晶体之美

1. XRD精修教程(一)——XRD精修基本原理与GSAS软件简介(附GSAS软件下载链接)点击上图即可查看全文X射线衍射分析(XRD)在研究材料的相结构、相成分等多个方面有广泛的应用&#xff0c;但最常用的多晶衍射法有个缺点&#xff1a;得到的谱峰重叠严重&#xff0c;从而造成大量材料结…

多个cpp文件生成so_C++:C++的文件搜索路径

在做大型工程的时候&#xff0c;除了有C语法知识之外&#xff0c;还要有工程能力。最先要具备的能力是&#xff1a;理解C文件的编译&#xff0c;链接过程。明白C头文件的搜索路径。本文&#xff0c;介绍C的文件搜索路径。对于C文件来说&#xff0c;主要有两种&#xff0c;一种是…

HH SaaS电商系统的店铺系统设计

文章目录为什么店铺运营模式要区分B2C、C2C、O2O&#xff1f;O2O店铺B2C店铺自营B2C店铺第三方B2C店铺C2C店铺为什么O2O店铺不允许售卖快递类的商品&#xff1f;B2C、C2C模式的自提和O2O的自提有什么区别&#xff1f;B2C、C2C模式的配送和O2O的配送有什么区别&#xff1f;为什么…

监听js变量的变化_JS监听事件型爬虫

点击上方“Python数据科学”&#xff0c;选择“星标公众号”关键时刻&#xff0c;第一时间送达&#xff01;作者&#xff1a;zuobangbang来源&#xff1a;zuobangbang最近开始研究网页参数的JS加密&#xff0c;但是大型网站的JS文件过于繁杂&#xff0c;不适合新手上路&#xf…

HH SaaS电商系统的支付模块设计

文章目录支付单支付单状态流转逻辑说明支付相关实体支付流水记录支付方式支付渠道支付单 销售订单生成时&#xff0c;同步生成支付单&#xff0c;如果销售订单的应付金额由首付款和尾款组成&#xff0c;那么会生成两个支付单 支付单与销售订单的“联合单号”或者“退款单ID”关…

添加几个手机联系人_One UI 3.0: 更细腻、更好用,这才是手机系统该有的样子

作为全球出货量最多的 Android 手机厂商&#xff0c;三星宣布将于北京时间 1 月 14 日正式召开 2021 年度的新品发布会。伴随着 S21 的即将发售&#xff0c;我想借此机会和大家一起来聊一聊前不久刚刚推送正式版本的 One UI 3.0。One UI 3.0 是三星基于 Android 11.0 打造的新一…

HH SaaS电商系统的商城模块设计

文章目录好获SaaS电商系统层级关系商城实体商城运营模式商城可选子系统创建商城商城管理后台有供应系统和无供应系统的B2C和混合模式的商城系统对比有仓储系统和无仓储系统的B2C和混合模式的商城系统对比有店铺系统和没有店铺系统的商城系统对比商城关闭商家入驻通道B2C模式商城…

HH SaaS电商系统的物流单设计

业务说明 物流信息提交后&#xff0c;系统生成物流单&#xff0c;出库单与物流单是一对多的关系 退货时买家填写物流信息&#xff0c;提交后系统生成物流单和入库单&#xff0c;物流单需要保存入库单的id 物流单实体

pcl_openmap_OpenMap教程5 – 3层GIS应用程序

pcl_openmap1.简介 欢迎使用OpenMap系列教程的第5个教程。 OpenMap是一个免费的开源Java GIS库。 这是以前的教程列表&#xff1a; 在第一个教程中&#xff0c;我们创建了一个基本的OpenMap GIS应用程序&#xff0c;该应用程序在JFrame中显示一个从文件系统加载的具有一个形状…