前言
- 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",// tokenAuthorization: "",},};// 发送请求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",// tokenAuthorization: "",},};// 发送请求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 (){// getconst res = await requestget ()console.log("get请求结果", res);// postconst ress = await requestpost ()console.log("post请求结果", ress);
}
细节:
1.注意基地址配置不要带前缀-https:// 会报错
2.port 一般不用动
3.end()方法一定要写,不然请求可能会发不出去
4.不要直接复制这么多-按照注释请求成功在改
总结:
经过这一趟流程下来相信你也对 node项目-使用http模块发送get-post请求 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!
有什么不足的地方请大家指出谢谢 -- 風过无痕