express接口请求的几种方式分析总结

导语

在用express做接口开发的时候,我们要处理post,get,put,delete等请求,以及jsonp的方式,这篇文章记录下结合ajax,实现处理这些请求方式的过程

实现过程

上代码,主要演示post,get及jsonp的请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body><button id="getBtn">GET</button><button id="postBtn">POST</button><button id="delBtn">DELETE</button><button id="jsonpBtn">JSONP</button><script>$(function(){const btnGet = $('#getBtn');const btnPost = $('#postBtn');const delBtn = $('#delBtn');const jsonpBtn = $('#jsonpBtn');btnGet.click(function(){console.log('哈哈哈')$.ajax({type:"GET",url:"http://127.0.0.1:4444/api/get",data:{name:'sa',age:20},success(res){console.log("🚀 ~ success ~ res:", res)}})})btnPost.click(function(){console.log('哈哈哈')$.ajax({type:"POST",url:"http://127.0.0.1:4444/api/post",data:{name:'lulu',age:18},success(res){console.log("🚀 ~ success ~ res:", res)}})})delBtn.click(function(){$.ajax({type:'DELETE',url:'http://127.0.0.1:4444/api/delete',success(res){console.log("🚀 ~ success ~ res:", res)}})})//jsonp的请求需要加上datatype字段属性,其他的不用jsonpBtn.click(function(){$.ajax({url:'http://127.0.0.1:4444/api/jsonp?cabllbacb=cb',dataType:'jsonp',success(res){console.log("🚀 ~ success ~ res:", res)}})})})</script>
</body>
</html>

在这里插入图片描述

jsonp的请求需要加上datatype字段属性,其他的不用,?callback=cb可以自己自定义,取名不限制,要注意的时候后端接口会获取这个名字,会用上,要保持一致

服务器接口代码

const express = require("express");
const userRouter = require("./router/user");
const bodyParser = require("body-parser");
const path = require("path");
const cors = require("cors");
const app = express();app.use(express.static("public"));
//ejs模版的必须配置
// app.set("view engine", "ejs");
// app.set("views", path.join(__dirname, "views"));
//解析请求体参数
app.use(bodyParser.json());
app.use(express.urlencoded({ extended: false }));//jsonp接口,必须在cors配置之前
app.use("/api/jsonp", (req, res) => {// TODOconst fnName = req.query.callback;const data = {name: "李世明",age: 150,gender: "男",};const sData = `${fnName}(${JSON.stringify(data)})`;res.send(sData);
});//跨域资源共享
app.use(cors());
app.use("/api", userRouter);//错误级别的中间件
app.use((err, req, res, next) => {res.send("Error! " + err.message);
});app.listen(4444, () => {console.log("app is running on port 4444");
});

**注意点:jsonp接口要写在配置cors配置之前,否则会当做普通的接口请求处理。**

get请求的结果

在这里插入图片描述

post请求的结果

在这里插入图片描述
delete请求的结果

关于预检请求也就是options接口:

客户端向服务端发起的询问是否支持该接口请求,服务端允许则发起真是的请求,否则会拒绝当前的请求
1.除get,post,head三个简单请求方式外的其他请求方式都会触发预检请求
2.请求头添加了自定义的信息,不是常见的请求头字段,也会触发预检请求

在这里插入图片描述
JSONP请求结果
在这里插入图片描述

严格来说,
jsonp不属于真正的ajax请求,因为它没有使用xmlhttprequest这个对象
JSONP只支持get方式,不支持其他请求方式

在这里插入图片描述
表头里面其他两个参数是浏览器自动生成的,不需要我们处理

const express = require("express");
const router = express.Router();router.get("/get", (req, res) => {const data = req.query;res.send({status: 0,msg: "ok",data,});
});router.post("/post", (req, res) => {const data = req.body;res.send({status: 0,msg: "ok",data,});
});router.delete("/delete", (req, res) => {res.send({status: 0,msg: "ok",});
});module.exports = router;

到这里,我们就熟悉了怎么处理常见的接口请求了

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

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

相关文章

(学习日记)2024.04.05:UCOSIII第三十三节:互斥量

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

51单片机入门_江协科技_17~18_OB记录的笔记

17. 定时器 17.1. 定时器介绍&#xff1a;51单片机的定时器属于单片机的内部资源&#xff0c;其电路的连接和运转均在单片机内部完成&#xff0c;无需占用CPU外围IO接口&#xff1b; 定时器作用&#xff1a; &#xff08;1&#xff09;用于计时系统&#xff0c;可实现软件计时&…

数据库基础(面试常见题)

一、数据库基础 1. 数据抽象&#xff1a;物理抽象、概念抽象、视图级抽象,内模式、模式、外模式2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)数据定义&#xff1a;Create Table,Alter Table,Drop Table, Craete/Drop Index等数据操纵&#xf…

C语言题目:分段函数练习

题目描述 输入x &#xff0c;计算并输出下列分段函数 f(x) 的值。可以调用数学库函数&#xff1a;平方根函数sqrt(),绝对值函数fabs() 和幂函数 pow()。 保留2位小数 输入格式 x 输出格式 f(x) 样例输入 5 样例输出 15.00 代码分析 包含标准输入输出库和数学库: #incl…

Linux -- 字符设备驱动--LED的驱动开发(初级框架)

驱动框架一阶段 我们怎样去点亮一个 LED 呢&#xff1f;分为三步&#xff1a; 看原理图确定引脚&#xff0c;确定引脚输出什么电平才能点亮/熄灭 LED 看主芯片手册&#xff0c;确定寄存器操作方法&#xff1a;哪些寄存器&#xff1f;哪些位&#xff1f;地址是&#xff1f; 编…

webpack5如何关闭全屏错误

1、找到vue.config.js 2、在上面的devServer里面添加如下&#xff1a; client: {overlay: false, // 禁用全局错误提示},

mynet开源库

1.介绍 个人实现的c开源网络库&#xff0e; 2.软件架构 1.结构图 2.基于event的自动分发机制 3.多优先级分发队列&#xff0c;延迟分发队列 内部event服务于通知机制的优先级为0&#xff0c;外部event优先级为1&#xff0e; 当集中处理分发的event_callback时&#xff0c…

更新!谷歌倾斜摄影转换生成OSGB瓦片V0.2版

半个月前发表了一篇文章(首发&#xff01;谷歌倾斜摄影转换生成OSGB格式),首次将谷歌原始倾斜摄影瓦片转成OSGB瓦片&#xff0c;有读者对文章里的内容有诸多疑问&#xff0c;可能我在文章中描述的不够清楚&#xff0c;这里再解释一下。 1.谷歌倾斜摄影3DTiles瓦片生成方案 之…

若依ts版本(vue3+element plus+ts)

1、项目简介 本项目参考若依前后端分离版&#xff0c;前端由[若依vue3]改写为ts版本[ruoyi-web-vue3-ts]&#xff0c;后端对[若依V3.8.7]进行了修改[后端版本分支vue3.ts.3.8.7]&#xff0c;具体文档参见[若依官方文档]。本项目对部分代码做了优化&#xff0c;增加了activiti7…

langchain 学习笔记-FunctionCalling三种方式

ChatGPT 基于海量的训练数据生成答案&#xff0c;所以它无法回答训练数据中没有的信息或搜索信息 。人们希望 ChatGPT 具有对话以外的各种功能&#xff0c;例如“我想管理我的待办事项列表”。 函数调用是对此类请求的响应。 通过使用函数调用&#xff0c;ChatGPT 现在可以在生…

LeetCode-215. 数组中的第K个最大元素【数组 分治 快速选择 排序 堆(优先队列)】

LeetCode-215. 数组中的第K个最大元素【数组 分治 快速选择 排序 堆&#xff08;优先队列&#xff09;】 题目描述&#xff1a;解题思路一&#xff1a;排序解题思路二&#xff1a;快速选择解题思路三&#xff1a;0 题目描述&#xff1a; 给定整数数组 nums 和整数 k&#xff0…

AI技术创业机会之智慧城市与智慧交通

人工智能(AI)技术的创新与发展为智慧城市与智慧交通领域带来了革命性的变革,为创业者创造了大量创新与创业机会。以下详述了智慧城市与智慧交通背景下AI技术的创业机会及其具体细节与内容,以5000字篇幅深入剖析各细分领域,为有志于投身这一领域的创业者提供全面、深入的商…

Vue-ts项目导入Js文件方法-书写提示无法找到模块“XXXX”的声明文件-配置说明

提示 无法找到模块“/filter/filter”的声明文件。“d:/code/byWork/mixmarvel/SendAssetsClient/src/filter/filter.js”隐式拥有 "any" 类型。 解决方法 修改 tsconfig.json {"compilerOptions": {"target": "esnext","modu…

OneFlow深度学习框架介绍

OneFlow是一个开源的深度学习框架&#xff0c;旨在为用户提供高效、易用的工具来进行深度学习模型的开发、训练和部署。以下是一些OneFlow框架的特点和优势&#xff1a; 高效性能&#xff1a; OneFlow针对大规模深度学习模型进行了优化&#xff0c;具有优秀的计算性能和内存管理…

Linux Shell 比较运算有哪些,以及怎么用

Linux Shell 比较运算有哪些&#xff0c;以及怎么用 在 Linux Shell 脚本编程中&#xff0c;进行算术比较是常见的需求&#xff0c;特别是在编写条件判断语句时。Shell 提供了一系列的算术比较操作符&#xff0c;这些操作符通常用在 if、while 等语句中&#xff0c;以便进行数…

程序员如何搞副业?

程序员不仅拥有将抽象概念转化为实际应用的能力&#xff0c;还通常具备强大的逻辑思维和问题解决能力。然而&#xff0c;许多程序员并不满足于仅仅在一家公司工作&#xff0c;他们渴望通过副业来实现个人价值的最大化&#xff0c;增加收入&#xff0c;甚至探索自己的创业梦想。…

前端及nodejs后端面试经验

目录 前端双向绑定如何实现自定义指令如何实现promise的执行顺序父子组件的信息传递cookies&#xff0c;session&#xff0c;webStoragevuex回流和重绘指令watch和watchEffect的区别watch和computed的区别vue3新功能Composition APIproxy和definePropertyTeleport 请求post和pu…

RIP配置不求人:手把手教你配置RIP路由

#教育优质作者发文挑战赛# 大家好&#xff0c;今天给同学们介绍一下RIP基本功能相关配置 01、基本概念 RIP是一种基于距离矢量&#xff08;Distance-Vector&#xff09;算法的协议&#xff0c;它使用跳数&#xff08;Hop Count&#xff09;作为度量值来衡量到达目的地址的距离…

耐压40V、输出电压1.23-37V可调,适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。

一、应用领域 适用于工控主板、TV板卡、安卓主板、车载功放电源等产品方案应用。 二、功能介绍 D1509是一款输入耐压40V、输出电压1.23-37V可调、输出电流最大2.0A的高效率、高精度DC-DC芯片&#xff0c;其输出电压有固定3.3V、5.0V和12.0V的版本&#xff0c;可以为客户省去…

【2024】Rancher的安装与介绍

———————————————————————————— 记录一下rancher的学习与使用过程 本部分内容包括rancher的介绍、特点、与k8s关系和部署等内容 ———————————————————————————— Rancher是什么&#xff1f; 简单来说&#xff0c;Ranc…