前言
- http模块是node.js提供内置模块,可以用来发送请求
- 使用场景是本身这个node服务就是后端,调用第三方api或者其他服务使用http模块
- http模块和axios本质上是一个东西,看自己怎么选择使用
代码实现-不能直接复制-看注释
1.请求文件代码
// 导入http模块
const http = require("http");
// 注意基地址
// let base_url = "https://ceshi.com"
// 基地址-去掉https://前缀 - 不去会报错
let base_url = "ceshi.com"
// get-请求 - 获取
// 使用promise - 方便维护和管理
const requestget = () => {
return new Promise((resolve, reject) => {
// 配置项
const options = {
// 基地址
hostname: base_url,
// 默认端口-不要改
port: 80,
// 接口路径
path: `/api/ceshi/list?参数=${"12"}&参数=${"12"}`,
// 请求方式
method: "get",
// 请求头信息
headers: {
// 请求参数格式
"Content-Type": "application/json; charset=utf-8",
// token
Authorization: "",
},
};
// 发送请求
const getlist = http.request(options, (res) => {
res.on("data", (data) => {
// 把返回值转换成utf-8格式
const list = Buffer.from(data).toString("utf8");
// 输出在控制台-json格式
process.stdout.write(list);
// 转换数据
const getlist = JSON.parse(list);
// 返回成功结果
resolve(getlist);
});
});
// 错误处理
getlist.on("error", (err) => {
// 返回失败结果
reject(err.message);
});
// 请求参数-写入
getlist.write(postData);
// 结束请求-不写请求发送不出去
getlist.end();
})
}
// post-请求 - 分页查询
// 使用promise - 方便维护和管理
const requestpost = () => {
return new Promise((resolve, reject) => {
// 请求参数
let postData = querystring.stringify({
// 页码
// 页数
// 总数
// 参数
});
// 配置项
const options = {
// 基地址
hostname: base_url,
// 默认端口-不要改
port: 80,
// 接口路径
path: "/api/ceshi/list",
// 请求方式
method: "post",
// 请求头信息
headers: {
// 请求参数格式
"Content-Type": "application/json; charset=utf-8",
// token
Authorization: "",
},
};
// 发送请求
const getpost = http.request(options, (res) => {
res.on("data", (data) => {
// 把返回值转换成utf-8格式
const list = Buffer.from(data).toString("utf8");
// 输出在控制台-json格式
process.stdout.write(list);
// 转换数据
const getlist = JSON.parse(list);
// 返回成功结果
resolve(getlist);
});
});
// 错误处理
getpost.on("error", (err) => {
// 返回失败结果
reject(err.message);
});
// 请求参数-写入
getpost.write(postData);
// 结束请求-不写请求发送不出去
getpost.end();
});
};
2.调用
const { requestget,requestpost } = require("文件位置");
async function getpostrequest (){
// get
const res = await requestget ()
console.log("get请求结果", res);
// post
const ress = await requestpost ()
console.log("post请求结果", ress);
}
细节:
1.注意基地址配置不要带前缀-https:// 会报错
2.port 一般不用动
3.end()方法一定要写,不然请求可能会发不出去
4.不要直接复制这么多-按照注释请求成功在改
总结:
经过这一趟流程下来相信你也对 node项目-使用http模块发送get-post请求 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!
有什么不足的地方请大家指出谢谢 -- 風过无痕