node中get和post接口
接口传参
- 使用ajax请求向服务器接口传参,按http协议的约定,每个请求都有三个部分:
请求行: 保存了请求方式,地址,可以以查询字符串的格式附加一部分数据。
请求头:它可以附加很多信息,其中content-type用来约定请求体中保存的数据格式。
content-type常见有三种取值:
| content-type的值 | 表示请求体的数据格式 | 示例 |
|---|---|---|
| application/x-www-form-urlencode | 普通键值对象 | a=2&c=1 |
| application/json | json对象 | {a:1,b:{c:1}} |
| multipart/form-data | 上传文件 | file |
请求体: 本次请求携带的参数。至于这些参数到了后端应该如何解析出来,由请求头中的content-type来决定。

方法一:请求行。
常见方式如下:
使用ajax技术,通过get方式传参。
在浏览器地址栏中输入接口地址并补充上查询字符串。
方法二:请求体
ajax中的post, put, delete可以从请求体中进行传参。
另外,请求头中的content-type用来告之服务器应该以何种方式去解析请求体中的数据。
express写get接口
- Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架。
- 框架:是一个半成品,用来快速解决一类问题;库就是工具集,使用非常灵活) (框架有:bootstrap, lay-ui, express, vue, react ; 库:zepto.js , jQuery, day.js, underscore, lodash, art-template, axios, echart.....)
- web 开发: 对不同的请求能够显示页面;提供接口服务;
- 理解:
现在要用express来写web服务
对于node来说,Express 是一个第三方模块,有丰富的 API 支持,强大而灵活的中间件特性
- get无传参的最简单
const express = require('express');
const app = express();
app.get('/get', function(req, res) {
// 直接返回对象
res.send({ name: '小杜' });
});
app.listen('8001', () => {
console.log('服务器启动成功');
});
- get有传参
express框架会自动收集get类型的接口从url地址中传递的查询字符串参数,并自动保存在req对象的query属性中。我们直接来获取即可。
const express = require('express');
const app = express();
app.get('/get', function(req, res) {
// 直接返回对象
console.log(req.query);
res.send({ name: 'abc' });
});
app.listen('8001', () => {
console.log('服务器启动成功');
});
post请求
- post传递普通键值对
const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.urlencoded());
app.post("/add",function(req,res){
//2. 可以通过req.body来获取post传递的键值对
res.send(req.body)
app.listen('8001', () => {
console.log('服务器启动成功');
});
})
- post传递JSON格式
const express = require('express');
const app = express();
// 1. 使用中间件
app.use(express.json());
app.post("/postJSON",function(req,res){
//2. 可以通过req.body来获取post传递的键值对
res.send(req.body)
app.listen('8001', () => {
console.log('服务器启动成功');
});
})
- post接口-form-data文件上传
如果post涉及文件上传操作,则需要在服务器端额外使用第三方multer这个包(不属于express)来获取上传的信息。
Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。
1.安装
npm i multer
2.使用
// 1. 引入包
const multer = require('multer');
// 2. 配置
const upload = multer({dest:'uploads/'}) // 上传的文件会保存在这个目录下
// uploads表示一个目录名,你也可以设置成其它的
// 3. 使用
// 这个路由使用第二个参数 .upload.single表示单文件上传, 'cover' 表示要上传的文件在本次上次数据中的键名。对应于前端页面上的:
// <input type="file" name='cover'/>
app.post('/publish', upload.single('cover'), (req, res) => {
console.log('接收到的参数是', req.file, req.body);
res.send({ message: "ok" })
})
app.listen(8001, () => {
console.log('8001');
})
- 说明:
如果当前目录下没有uploads,它会自动创建uploads这个文件夹
upload.single只是处理了文件的上传。你仍可以通过req.body来获取其它参数
node中get和post接口的更多相关文章
- Node.js 中MongoDB的基本接口操作
Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...
- node中的可读流和可写流
javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...
- 使用express+multer实现node中的图片上传
使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...
- node中可读流、可写流
javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...
- 在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies
在<vue-cli搭建的项目中增加后台mock接口>中实现了后台mock,但是前端post的t数据都要在mock的后台接口中使用req的接收数据事件获取http协议body中的数据. re ...
- Node中没搞明白require和import,你会被坑的很惨
ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...
- Node中导入模块require和import??
转自:https://blog.csdn.net/wxl1555/article/details/80852326 S6标准发布后,module成为标准,标准的使用是以export指令导出接口,以im ...
- Node中的模块系统
加载require var 自定义变量名称 = require('模块') 两个作用: 执行被加载模块的代码 得到被加载模块中的exports导出接口对象 导出exports node中是模块作用域, ...
- 关于node中两个模块相互引用却不会死循环的问题
关于node中两个模块相互引用却不会死循环的问题 node中是通过require来导入加载模块的,require有两个作用: 1.加载文件模块并执行里面的代码 2.拿到被加载文件模块导出的接口对象 现 ...
- Node教程——API接口开发(Node版的CRUD通用接口的搭建)(MangoDB+Express_Version2)
1. 概述 时间跨度有点大,之前就跟大家唠嗑过一些知识点,也开启了一个Node书写一个后台api项目的开始,出于各种原因,迟迟没有更新博文.现在我把这个坑填上,如果你还有阅读过我之前的文章,我建议你先 ...
随机推荐
- maven :Cannot start maven service
问题报错信息:maven启动失败 java.lang.RuntimeException: Cannot start maven service at org.jetbrains.idea.maven. ...
- 通过 HDU 2048 来初步理解动态规划
HDU 2048 数塔 问题描述: 题目链接-点我查看题目 给出一个数塔,要求从顶层走到底层,每一步只能从高层走到相邻的低层节点,求经过的结点的数字之和最大是多少? 动态规划的定义 dynam ...
- springcloud(五) - 网关gateway
功能介绍 springcloud gateway提供一种以路由的方式,基于Filter链的方式提供网关的基本功能.如安全.监控.限流. 网关:将不同协议的网络段连接到一起的设备,外网进入内网的入口,对 ...
- VSCode+EIDE开发CH32V系列RISC-V MCU
VSCode+EIDE开发CH32V系列RISC-V MCU 1. VS Code Visual Studion Code (VS Code),是一款由微软开发且跨平台的免费源代码编辑器.该软件支持语 ...
- html入門 如何 區別行級元素 和 塊級元素
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- smartgit 安装
下载 https://www.syntevo.com/smartgit/download/ 破解删掉
- [Oracle19C 数据库管理] 管理回滚表空间(UNDO Tablespace)
当对数据进行修改时,Oracle数据库会将旧的数据存储到UNDO表空间(回滚表空间).回滚表空间让用户可以rollback到修改前的数据,提供了读一致性,并支持闪回查询过去的数据.Undo也用来在Tr ...
- 20230130-cf2303复盘
今天打了TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!)这场混合场,我现在是B题稳切但不能快切,C题有机会切,D题无机会的水平,那么这场的复盘B ...
- go-浅学设计模式随记
责任链模式 组成:由多个处理器及处理器处理标志串联组成 作用:常用于处理流水线事务,利用多个处理器对同一个对象进行处理,可以利用各处理器开关 场景:常见逻辑层处理逻辑:获取参数.fetch数据.逻辑处 ...
- SQL1224 is returned during the execution of an SQL procedure
SQL1224 is returned during the execution of an SQL procedure https://www.ibm.com/support/pages/sql12 ...