请用node.js 封装ts文件,get,post请求,传参url,及data,设置cookie,然后在前端vuejs调用
时间: 2024-03-26 12:42:31 浏览: 79
好的,我可以为你提供一个基本的 Node.js 模块,它封装了 get 和 post 请求,并支持传递 URL、数据、cookie 等参数。你可以在前端使用 axios 或其他 HTTP 客户端库来调用这个模块。
首先,你需要安装一些 Node.js 模块:
```
npm install request request-promise tough-cookie
```
然后,你可以创建一个名为 `http.js` 的文件,内容如下:
```javascript
const request = require('request-promise');
const tough = require('tough-cookie');
class HttpClient {
constructor() {
this.cookieJar = new tough.CookieJar();
}
async get(url) {
return this.sendRequest('GET', url);
}
async post(url, data) {
return this.sendRequest('POST', url, data);
}
async sendRequest(method, url, data) {
const options = {
method: method,
uri: url,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
},
jar: this.cookieJar,
json: true,
};
if (data) {
options.body = data;
}
try {
const response = await request(options);
return response;
} catch (error) {
console.error(`Failed to send ${method} request to ${url}`, error);
throw error;
}
}
}
module.exports = HttpClient;
```
这个模块使用了 request-promise 和 tough-cookie 库,它提供了一个 `HttpClient` 类,它有两个方法:`get` 和 `post`。这两个方法都接受一个 URL 参数和一个可选的数据参数。如果你需要在请求中设置 cookie,可以调用 `setCookie` 方法来设置。
然后,你可以在你的 Node.js 代码中使用这个模块,例如:
```javascript
const HttpClient = require('./http');
const client = new HttpClient();
client.setCookie('my-cookie-name', 'my-cookie-value');
client.get('https://example.com')
.then(response => {
console.log('Response:', response);
})
.catch(error => {
console.error('Error:', error);
});
```
如果你想在前端使用这个模块,你需要将它打包成一个 JavaScript 文件,然后在 Vue.js 中引入它。这个过程可能有点复杂,但是你可以使用工具如 webpack、rollup、parcel 等来完成它。
阅读全文