一、简单几行代码解决post和get请求,话不多说,整代码
const axios = require("axios");
const FS = require("fs");
const FilePath = require("path");
const FormData = require("form-data");
const UUID = require('uuid');
let nums = 1;
// 普通get请求
async function getRequest(url, headers, params) {
console.log(nums++ + ".get请求,url: " + url);
console.log("参数: " + JSON.stringify(params));
let start = new Date().getTime();
let response = await axios.get(url, {
params: params,
headers: headers
});
let end = new Date().getTime();
console.log("耗时:" + (end - start) + "ms")
return response.data;
}
// 普通post请求
async function postRequest(url, headers, params) {
console.log(nums++ + ".post请求,url: " + url);
console.log("参数: " + JSON.stringify(params));
let start = new Date().getTime();
let response = await axios.post(url, params, {
headers: headers
});
let end = new Date().getTime();
console.log("耗时:" + (end - start) + "ms")
return response.data;
}
// post表单请求
async function postForm(url, headers, params) {
console.log(nums++ + ".postForm请求,url: " + url);
console.log("参数: " + JSON.stringify(params));
let formData = new FormData();
let keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
formData.append(keys[i], params[keys[i]]);
}
let start = new Date().getTime();
let response = await axios.post(url, formData, {
headers: formData.getHeaders()
});
let end = new Date().getTime();
console.log("耗时:" + (end - start) + "ms")
return response.data;
}
// get下载请求
async function download(url, headers, params, fileFullName) {
console.log(nums++ + ".get下载请求,url: " + url);
console.log("参数: " + JSON.stringify(params));
const path = FilePath.resolve(fileFullName);
const writer = FS.createWriteStream(path);
let start = new Date().getTime();
const response = await axios.get(url, {
params: params,
headers: headers,
responseType: "stream"
});
await response.data.pipe(writer);
let end = new Date().getTime();
console.log("耗时:" + (end - start) + "ms")
}
// post上传请求,文件key需为file名,value可为数组或字符串
async function upload(url, headers, params) {
console.log(nums++ + ".post上传请求,url: " + url);
console.log("参数: " + JSON.stringify(params));
let formData = new FormData();
let keys = Object.keys(params);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
let value = params[key];
if ("file" === key) {
if (isArray(value)) {
for (let i = 0; i < value.length; i++) {
formData.append(key, FS.createReadStream(value[i]));
}
} else {
formData.append(key, FS.createReadStream(value));
}
} else {
formData.append(key, value);
}
}
let formDataHeaders = formData.getHeaders();
headers["Content-Type"] = formDataHeaders["content-type"];
let start = new Date().getTime();
let response = await axios.post(url, formData, {
headers: headers,
maxBodyLength: Infinity
});
let end = new Date().getTime();
console.log("耗时:" + (end - start) + "ms");
return response.data;
}
// 判断是否为数组
function isArray(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
}
例子:
// 普通get请求
let url11 = domain + "/Halloween/student/findById";
let params11 = {
"id": 1
};
let result11 = await utils.getRequest(url11, headers, params11);
console.log(JSON.stringify(result11));
// 普通post请求
let url12 = domain + "/Halloween/student/post";
let params12 = {
"name": "name111"
};
let result12 = await utils.postRequest(url12, headers, params12);
console.log(JSON.stringify(result12));
// postForm请求参数同普通post请求
// 下载
let url13 = domain + "/Halloween/file/download";
let params13 = {};
await utils.download(url13, headers, params13, "/Desktop/docker.txt");
// 上传单文件
let url14 = domain + "/Halloween/file/upload";
let params14 = {
"file": "/Desktop/docker.txt"
};
let result14 = await utils.upload(url14, headers, params14);
console.log(JSON.stringify(result14));
// 上传多文件
let url15 = domain + "/Halloween/file/uploads";
let params15 = {
"files": ["/Desktop/docker.txt", "/Desktop/docker1.txt"]
};
let result15 = await utils.upload(url15, headers, params15);
console.log(JSON.stringify(result15));
返回值:
1.get请求,url: http://127.0.0.1:8888/Halloween/student/findById
参数: {"id":1}
耗时:42ms
{"status":1,"errorCode":0,"errorMessage":null,"body":{"id":1}}
2.post请求,url: http://127.0.0.1:8888/Halloween/student/post
参数: {"name":"name111"}
耗时:5ms
{"status":1,"errorCode":0,"errorMessage":null,"body":null}
3.get下载请求,url: http://127.0.0.1:8888/Halloween/file/download
参数: {}
耗时:3ms
4.post上传请求,url: http://127.0.0.1:8888/Halloween/file/upload
参数: {"file":"/Desktop/docker.txt"}
耗时:8ms
{"status":1,"errorCode":0,"errorMessage":null,"body":"上传成功"}
5.post上传请求,url: http://127.0.0.1:8888/Halloween/file/uploads
参数: {"files":["/Desktop/docker.txt","/Desktop/docker1.txt"]}
耗时:7ms
{"status":1,"errorCode":0,"errorMessage":null,"body":"上传成功"}
看起来一样啊,两个函数不一样,get请求就是把headers和params放在一起了。这样就可以放弃postman了,一次能够请求多个接口,比如这个接口需要上面接口的返回值,直接赋值就行。