Node.js使用axios进行web接口调用

专栏收录该内容

Hi I'm Shendi




在 Node.js 中,自带的 http/https模块不是很好用,于是我去尝试能不能使用ajax,发现node.js是不支持xhr的,没有 XMLHttpRequest 对象,最后选择了 axios。



安装依赖

npm install axios

安装完后,在代码内可以引入 axios 模块



使用

axios 是基于 Promise 的

关于 Promise,可以查阅我写的另一篇文章:https://sdpro.top/blog/html/article/1034.html


示例如下

const axios = require('axios');

// 这里爬百度,请求头的host,user-agent, accept是必须,不然百度就给你拦截了
axios({
    url: `https://www.baidu.com/s`,
    method: 'get',
    params : {
        "wd" : "砷碲博客"
    },
    headers : {
        "Host" : "www.baidu.com",
        "User-Agent" : "Mozilla/5.0 Chrome/114.0.0.0",
        "Accept" : "text/html,application/xhtml+xml,application/xml;"
    }
}).then((res) => {
    console.log(`响应数据:${res.data}`);
}).catch((res) => {
    console.log(`请求出错:${res}`);
});

执行效果如下

执行效果



上面的示例中

  • url 请求地址
  • method 请求类型
  • params 请求参数,如果是POST请求应为 data
  • headers 请求头

res 参数中常用的有

  • status(响应状态码,例如200)
  • headers(响应头列表)
  • data(响应数据,如果是JSON则自动转JSON)

而 then 与 catch 是 Promise 部分了,成功执行后触发then,失败触发catch


上面的使用基本上可以满足大部分需求了,还可以像下面这样使用

axios.get("http://www.baidu.com").then(() => {});
axios.post("http://www.baidu.com").then(() => {});
// ...



END

本文链接:https://sdpro.top/blog/html/article/1094.html

♥ 赞助 ♥

尽管去做,或许最终的结果不尽人意,但你不付出,他不付出,那怎会进步呢?