node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > Node发出HTTP POST请求

Node发出HTTP POST请求的方法实例小结

作者:他强任他强03

这篇文章主要介绍了Node发出HTTP POST请求的方法,结合实例形式总结分析了三种常用的post请求操作方法,以及相关库操作注意事项,需要的朋友可以参考下

node发送post请求

There are many ways to perform an HTTP POST request in Node, depending on the abstraction level you want to use.

有多种方法可以在Node中执行HTTP POST请求,具体取决于您要使用的抽象级别。

The simplest way to perform an HTTP request using Node is to use the Axios library:

使用Node执行HTTP请求的最简单方法是使用Axios库 :

const axios = require('axios')
axios.post('https://flaviocopes.com/todos', {
  todo: 'Buy the milk'
})
.then((res) => {
  console.log(`statusCode: ${res.statusCode}`)
  console.log(res)
})
.catch((error) => {
  console.error(error)
}

Another way is to use the Request library:

另一种方法是使用Request库 :

const request = require('request')
request.post('https://flaviocopes.com/todos', {
  json: {
    todo: 'Buy the milk'
  }
}, (error, res, body) => {
  if (error) {
    console.error(error)
    return
  }
  console.log(`statusCode: ${res.statusCode}`)
  console.log(body)
}

The 2 ways highlighted up to now require the use of a 3rd party library.

到目前为止突出显示的2种方式都需要使用第三方库。

A POST request is possible just using the Node standard modules, although it’s more verbose than the two preceding options:

POST请求仅使用Node标准模块是可能的,尽管它比前面两个选项更冗长:

const https = require('https')
const data = JSON.stringify({
  todo: 'Buy the milk'
})
const options = {
  hostname: 'flaviocopes.com',
  port: 443,
  path: '/todos',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
}
const req = https.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`)
  res.on('data', (d) => {
    process.stdout.write(d)
  })
})
req.on('error', (error) => {
  console.error(error)
})
req.write(data)
req.end()

PS:笔者曾经在使用http与https库的过程中,遇到过不同协议的报错问题,于是做了一个简单的替换,如上述代码中,使用了:

const req = https.request(options, (res) => {
....
})

笔者对此做了如下的修改:

let mod = null;//http、https 别名
if(url.indexOf('https://')!==-1){
    mod = https;
}else{
    mod = http;
}
const req = mod.request(options, (res) => {
....
})

此时,针对URL的协议类型就可以自动调用相应的模块。

您可能感兴趣的文章:
阅读全文