Node.js 发起HTTP请求的5种方式

这篇具有很好参考价值的文章主要介绍了Node.js 发起HTTP请求的5种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP(百度百科):   超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;

1.Node 标准库内置了默认的 http 模块

        可以直接用这个模块来发起 HTTP 请求。但是开发起来较为麻烦。同时因为该库不能使用 HTTP 请求的异步/等待功能,所以我们还需要为分块数据使用异步流,然后再去手动解析响应数据。


const https = require('https')

https.get(' ', res => {

    let data = '';

    res.on('data', chunk => {
        data+=chunk;
    });

    res.on('end', () => {
        console.log(JSON.parse(data));
    });

}).on('error', err => {
    console.log('Error: ', err.message);
});

2.axios

        Axios,是一个基于 promise 的网络请求库,作用于 node.js 和浏览器中。在服务端它使用原生node.js http模块, 而在客户端 (浏览端) 则使用XMLHttpRequest

        1.常用配置项

请求地址 url: '/user' 
请求类型 method 
请根路径 baseURL:http://www.mt.com/api
请求前的数据处理 transformRequest:[function(data){}]
请求后的数据处理 transformResponse: [function(data){}]
自定义的请求头 headers:{' ’}
URL查询对象 params:{ id: 12 },
查询对象序列化函数 paramsSerializer: function(params){}
request body data: {  key: 'ace' }
超时设置 timeout: 1000,
跨域是否带 Token: withCredentials: false
身份验证信息 auth:[ uname:' ', pwd:'12'}
响应的数据格式 json /blob /document /arraybuffer /text/ stream: responseType:’json'

        2.params与get请求配合使用的。而data是与post请求配合使用的

//post 方法
axios({
  method: 'post',
  url: '/base/post',
  data: {
    a: 1,
    b: 2
  }
})

//get 方法
axios({
  method: 'get',
  url: '/base/get',
  params: {
    foo: {
      bar: 'baz'
    }
  }
})

        用例 :发起 get 请求

const axios = require('axios');

// 向给定ID的用户发起请求
axios.get('/user?ID=12345')
  .then(function (response) {
    // 处理成功情况
    console.log(response);
  })
  .catch(function (error) {
    // 处理错误情况
    console.log(error);
  })
  .then(function () {
    // 总是会执行
  });

// 上述请求也可以按以下方式完成(可选)
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // 总是会执行
  });  

// 支持async/await用法
async function getUser() {
  try {
    const response = await axios.get('/user?ID=12345');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

                ① Axios发送请求时params和data的区别

                params:会将参数加到 url 后面,和请求地址一起发送。传递的都是字符串。无法传递参数中含有json格式的数据。

                data :是添加到请求体(body)中(数据可以是 json 格式),作为一个请求体来发送。

        3.axios常用方法

nodejs xmlhttprequest,http,服务器,网络协议

         4.axios 特性

                ①从浏览器中创建XMLHttpRequest

                ②node.js创建http请求

                ③支持Promise API

                ④支持拦截请求和响应

                ⑤转换请求数据和响应数据

                ⑥取消请求

                ⑦可以自动转换将响应为JSON格式

                ⑧客户端支持防止CSRF

        5.和 ajax 区别

                ①axios通过Promise实现ajax技术的一种封装,不用设置回调,直接调用then方法。

                        (传统 Ajax 指的是 XMLHttpRequest(XHR), 核心是使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱

                ②axios返回的数据是一个promise,ajax返回的数据是回调

                ③axios比ajax更加好用,更加安全

3.superagent

        SuperAgent是一个基于Promise的轻量级渐进式的AJAX API,非常适合发送HTTP请求和接收服务器响应,是轻量级且更为优化的AJAX API,可用来处理GET、POST、PUT、DELETE、HEAD等请求,并支持绝对路径、链式调用等。

        SuperAgent有两个实现,一个是给浏览器使用的是浏览器原生对象XmlHttpRequest对象,一个是给Node.js使用的是核心的HTTP模块。

        superagent用法与axios十分的相似,但是需要去自己把数据处理成json格式。

4.node-fetch

        node-fetch是一个Node.js的模块,用于从远程服务器获取数据。它提供了一些方便的方法来从远程服务器获取数据,包括HTTP GET请求、POST请求、PUT请求和DELETE请求。

5.got

        got 是 Node.js 的另一个直观而强大的 HTTP 请求库。,不同于 axios 和 superagent,got 不会默认解析 JSON。文章来源地址https://www.toymoban.com/news/detail-833824.html

到了这里,关于Node.js 发起HTTP请求的5种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包