基于springboot 的 Ajax-fetchget post Axios-get post

Fetch

Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。

这种功能以前是使用 XMLHttpRequest 实现的。Fetch 提供了一个更理想的替代方案,可以很容易地被其他技术使用,例如 Service Workers。Fetch 还提供了专门的逻辑空间来定义其他与 HTTP 相关的概念,例如 CORS 和 HTTP 的扩展。

get请求  delete

基于springboot的fetch  get没有方法体不能上传下载图片

get1按钮是普通get请求不带参数

get2按钮是带参数的请求 且含有请求头

get3按钮是把带的参数封装json

delet按钮 删除与get相似
 

<div class="container"><button class="btn fget1 btn-primary btn-sm">fetch - get1</button><button class="btn fget2 btn-info btn-sm">fetch - get2</button><button class="btn fget3 btn-info btn-sm">fetch - get3</button><button class="btn fdelete btn-success btn-sm" onclick="del(999)">fetch - delete</button>
</div>
<script>let fget1 = document.querySelector('.fget1')fget1.onclick = function () {
//http://localhost:8080/get1 res.text()文本字符串 res.json()对象fetch('/get1').then(res => res.text()).then(data => {console.log(data)}).catch(err => {console.log('请求错误')})}//fetch get 向后端接口传值,后端接口接值,并处理值直接输出让前端接收//?a=10&b=20 {code:200,result:30}let fget2 = document.querySelector('.fget2')fget2.onclick = async () => {const res = await fetch('/get2?a=10&b=20&user=李四', {method: 'GET',headers: {tk: '123111111111111111111111111'}})const data = await res.json()console.log(data)console.log(data.code)console.log(data.result)}//fetch deletelet fdelete = document.querySelector('.fdelete')const del = async (id) => {const res = await fetch(`/delete?id=${id}`, {method: 'DELETE'})const data = await res.json()console.log(data)console.log(data.code)console.log(data.id)console.log(data.msg)}let fget3 = document.querySelector('.fget3')fget3.onclick = async () => {const res = await fetch('/get3?id=10&name=李四', {method: 'GET',headers: {'Content-Type': 'application/json',tk: '123111111111111111111111111'}})const data = await res.json()console.log(data)}</script>

a

@RestController
@CrossOrigin
public class fetch01 {@GetMapping("/get1")@CrossOriginpublic Map<String, Object> get1( ) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");return map;}@GetMapping("/get2")@CrossOriginpublic Map<String, Object> get2(@RequestParam(required = true,name = "id",defaultValue = "1000") int id ,String name,@RequestHeader("tk") String token) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");map.put("tk", token);return map;}let fget3 = document.querySelector('.fget3')fget3.onclick = async () => {const res = await fetch('/get3?id=10&name=李四', {method: 'GET',headers: {'Content-Type': 'application/json',tk: '123111111111111111111111111'}})const data = await res.json()console.log(data)}@DeleteMapping("/delete")@CrossOriginpublic Map<String, Object> delete(int id ) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("id", id);map.put("msg", "删除成功");return map;}}

Post请求

主要区别'Content-Type': 'application/x-www-form-urlencoded'

'Content-Type': 'application/json'

传入参数的时候需要加个注解

参数传输的格式

三种常见Content-Type格式,最后一种你肯定用过_content-type: application/json_前端呆头鹅的博客-CSDN博客

<body>
<div class="container"><button class="btn fget1 btn-primary btn-sm">fetch - post1</button><button class="btn fget2 btn-info btn-sm">fetch - post2</button>
</div>
<script>let get = document.querySelector('.fget1')get.onclick = async function () {const resp = await fetch('/post', {method: 'post', /*和post一样*//*  body: "id=999&name=张三丰", //User user*/body: JSON.stringify({id: 999, name: '缍三'}),headers: {/*   'Content-Type': 'application/x-www-form-urlencoded', //User user*/'Content-Type': 'application/json',// @RequestBody User usertk: '123111111111111111111111111put'}})const data = await resp.json();console.log(data)}let get1 = document.querySelector('.fget2')get1.onclick = async function () {const resp = await fetch('/post1', {method: 'post', /*和post一样*/body: "id=999&name=张三丰", //User userheaders: {'Content-Type': 'application/x-www-form-urlencoded', //User usertk: '123111111111111111111111111put'}})const data = await resp.json();console.log(data)}</script>
</body>

后端

@RestController
@CrossOrigin
public class fetchpost {@PostMapping("/post")@CrossOriginpublic Map<String, Object> post(@RequestBody User user, @RequestHeader("tk") String token) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");map.put("user", user);map.put("token", token);return map;}@PostMapping("/post1")@CrossOriginpublic Map<String, Object> post1( User user, @RequestHeader("tk") String token) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");map.put("user", user);map.put("token", token);return map;}}

Axios-get post

get方式

<button class="get1">get1</button><script>/*axios.defaults.baseURL = 'http://localhost';*/  //跨域的时候加上axios.defaults.headers.common['token'] = '321321321';axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //User userlet get1 = document.querySelector('.get1')get1.onclick = async function () {const data = await axios({url: '/get10',method: 'GET',params: {id: 10, name: '李四6'},headers: {'content-type': 'application/x-www-form-urlencoded', //@RequestBody User user*/}})console.log(data.data)}
</script>

后端

@RestController
@CrossOrigin
public class axion {
@GetMapping("/get10")@CrossOriginpublic Map<String, Object> get2(User user, int id, String name, @RequestHeader String token) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");map.put("user", user);map.put("id", id);map.put("name", name);map.put("token", token);return map;}  }

POST方式

<script>/*axios.defaults.baseURL = 'http://localhost';*/  //跨域的时候加上axios.defaults.headers.common['token'] = '321321321';axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //User userlet post = document.querySelector('.post')post.onclick = async function () {/* const data = await axios.get('/get200', {params: {id:999, name: 'jack'}})*/const data = await axios({url: '/post100',method: 'POST',/* body:{'name':'李四'},*/data: {name: '李强', id: 33333},headers: {'content-type': 'application/json', //@RequestBody User user}})console.log(data.data)}
</script>

后端

 @PostMapping("/post100")@CrossOriginpublic Map<String, Object> post100(@RequestBody User user, @RequestHeader String token) {Map<String, Object> map = new HashMap<>();map.put("code", 200);map.put("msg", "信息获取完成");map.put("user", user);map.put("token", token);return map;}

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

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

相关文章

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…

docker镜像管理-实操

一.docker镜像管理 1.拉取镜像 docker image pull <repository>:<tag> 镜像名称和标签使用 : 进行分隔&#xff0c;如果省略了标签&#xff0c;则默认为 latest docker image pull nginx:latest 或者docker pull nginx:latest 拉取下来的镜像默认保存在&#xff1…

Android kotlin系列讲解(进阶篇)解析XML格式数据

点击查看>返回总目录< | 上一篇:Android kotlin系列讲解(入门篇)使用HTTP访问网络 文章目录 1、Pull解析方式2、SAX解析方式 通常情况下,每个需要访问网络的应用程序都会有一个自己的服务器,我们可以向服务器提交数据,也可以从服务器上获取数据。不过这个时…

GO语言篇之文件操作

GO语言篇之文件操作 文章目录 GO语言篇之文件操作前言使用总结 前言 Go语言提供了丰富的操作文件的函数&#xff0c;这为我们开发者减少了不少负担 使用 // 打开文件 file, err : os.Open("filepath") if err ! nil {panic(err) }// 关闭文件&#xff0c;每次该文…

Ubuntu下Nginx配置ModSecurity详细思路及过程

下面是一个简介&#xff1a; Ubuntu是一个linux操作系统&#xff0c;Nginx是一个web服务器软件&#xff0c;ModSecurity是一款开源的web应用防火墙&#xff08;江湖人称“WAF”&#xff09;。 如果上面的概念没有一定的了解&#xff0c;下面的内容其实也能看。就是不好操作。…

浅谈C++|模板篇

一.模板模板概念 模板就是建立通用的模具&#xff0c;大大提高复用性 模板的特点&#xff1a; 1.模板不可以直接使用&#xff0c;它只是一个框架 2.模板的通用并不是万能的 C另一种编程思想称为泛型编程&#xff0c;主要利用的技术就是模板。 C提供两种模板机制:函数模板和类模…

宋浩概率论笔记(八)假设检验

宋浩系列全系列的最后一更&#xff01; 本章考察频率很低&#xff0c;核心在于记忆检验不同参数时用到的分布~

【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)

写在前面 本文是一篇关于 USB2.0 HUB 集线器的制作教程&#xff0c;包括详细的步骤以及电路图解释。 本文记录了笔者制作 USB2.0 HUB 集线器的心路历程&#xff0c;希望对你有帮助。 本文以笔记形式呈现&#xff0c;通过搜集互联网多方资料写成&#xff0c;非盈利性质&#xf…

许战海战略文库|品类缩量时代:制造型企业如何跨品类打造份额产品?

所有商业战略的本质是围绕着竞争优势与竞争效率展开的。早期&#xff0c;所有品牌立足于从局部竞争优势出发。因此,品牌创建初期大多立足于单个品类。后期增长受限,就要跨品类持续扩大竞争优势&#xff0c;将局部竞争优势转化为长期竞争优势&#xff0c;如果固化不前很难获得增…

Spark【Spark SQL(四)UDF函数和UDAF函数】

UDF 函数 UDF 是我们用户可以自定义的函数&#xff0c;我们通过SparkSession对象来调用 udf 的 register&#xff08;name&#xff1a;String&#xff0c;func&#xff08;A1,A2,A3...&#xff09;&#xff09; 方法来注册一个我们自定义的函数。其中&#xff0c;name 是我们自…

腾讯mini项目-【指标监控服务重构】2023-07-19

今日已办 OpenTelemetry Logs 通过日志记录 API 支持日志收集 集成现有的日志记录库和日志收集工具 Overview 日志记录 API - Logging API&#xff0c;允许您检测应用程序并生成结构化日志旨在与其他 telemerty data&#xff08;例如metric和trace&#xff09;配合使用&am…

Java代码审计16之fastjson反序列化漏洞(1)

文章目录 1、简介fastjson2、fastjson的使用2.1、将类序列化为字符串2.2、将字符串还原为对象2.3、小结以上2.4、稍微扩展思路 3、fastjson漏洞利⽤原理与dnslog4、JdbcRowSetImpl利用链4.1、JdbcRowSetImpl的基本知识4.2、利用代码复现4.3、生成poc4.4、模拟真实场景4.5、利用…

MongoDB差异数据对比的快速指南

MongoDB是一种非关系型数据库&#xff0c;它以灵活的 JSON-like 文档的形式存储数据&#xff0c;这种特性使其在处理大量数据和实现快速开发时更具有优势。而由于其灵活的数据模型和强大的性能&#xff0c;MongoDB 被广泛应用在各种业务场景中。随着业务的发展和数据的增长&…

kafka 3.5 生产者在把数据推送到服务端,再到落盘的过程中,怎么保证不丢失数据源码

一、生产者客户端配置参数acks说明1、acks12、acks03、acks-1 二、请求在写入Leader的数据管道之前&#xff0c;则会验证Leader的ISR副本数量和配置中的最小ISR数量1、Leader的ISR小于配置文件中minInSyncReplicas&#xff0c;并且acks-1&#xff0c;则抛异常2、如果acks不等于…

Excel VLOOKUP 初学者教程:通过示例学习

目录 前言 一、VLOOKUP的用法 二、应用VLOOKUP的步骤 三、VLOOKUP用于近似匹配 四、在同一个表里放置不同的VLOOKUP函数 结论 前言 Vlookup&#xff08;V 代表“垂直”&#xff09;是 excel 中的内置函数&#xff0c;允许在 excel 的不同列之间建立关系。 换句话说&#x…

iPhone苹果15手机怎么看是国行还是美版或港版的苹果iPhone15手机?

iPhone苹果手机15机型区域版本识别代码 CH代码为国行 LL代码为美版 ZP代码为港版 iPhone苹果15手机怎么看是国行还是美版或港版的苹果iPhone15手机&#xff1f; 1、打开苹果iPhone15手机桌面上的「设置」&#xff1b; 2、在iPhone苹果15手机设置内找到「通用」并点击打开&…

大型游戏动作竞技游戏开发和体感VR/AR游戏开发:创造引人入胜的虚拟世界

大型游戏动作竞技游戏和体感VR/AR游戏都代表了游戏开发领域的最新趋势。它们提供了高度沉浸式的娱乐体验&#xff0c;结合了视觉、听觉和体感互动。在本文中&#xff0c;我们将探讨如何开发这两种类型的游戏&#xff0c;并介绍其关键特点和开发流程。 大型游戏动作竞技游戏的特…

Spring学习 (一): IoC容器

前言 参考 廖雪峰Spring教程 一、什么是IoC容器 容器的意思可以理解为一个提供供程序正常运行&#xff0c;提供各种依赖的组件的包的环境。 IoC&#xff0c;控制反转&#xff0c;实际上就是将原本由代码编写者控制的各个对象&#xff08;组件&#xff09;的生命周期托管给底…

Java手写HashMap及拓展实践

Java手写HashMap 思维导图 #mermaid-svg-liNfjvnThNZyNIWd {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-liNfjvnThNZyNIWd .error-icon{fill:#552222;}#mermaid-svg-liNfjvnThNZyNIWd .error-text{fill:#552222;…

【OJ比赛日历】快周末了,不来一场比赛吗? #09.16-09.22 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-09-16&#xff08;周六&#xff09; #3场比赛2023-09-17…