We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在具有一定规模以上的服务端应用中,应用所需的数据、处理逻辑等,往往是分散在不同的服务器上的,这些服务器通信来交换数据,最终以一个个的HTTP或其他协议接口的形式与网页通信。
服务端应用之间的通信,一种JavaScript开发者熟悉的方式是HTTP接口通信,在SSR等前后端同构的场景下很实用。
Node.js 内置模块 http 除了用于快速搭建HTTP服务,还可以作为HTTP客户端,与其他HTTP服务进行通信。
前文启动的HTTP服务
require('http').createServer((req, res)=>{ res.end('OK') }).listen(9000, ()=>console.log('http server listen on port 9000'))
发起对上述HTTP服务的HTTP GET请求
const http = require('http') http.get('http://localhost:9000/', res=>{ const { statusCode } = res if( statusCode !== 200){ console.log('error', statusCode) res.resume() // 释放内存 return } let rawData = '' res.on('data', chunk=>rawData += chunk) // 流式传输 res.on('end', ()=>{ console.log(rawData) }) }).on('error', console.error)
http 模块上另一个发起请求的方法是 request() ,可以设置请求的 method。
request()
method
几种常用的方法在 https 内置模块上也有着相似的用法。
https
Node.js v18 起支持兼容浏览器实现的全局 fetch() 方法,在之前的版本需要通过实验性选项启用,或使用第三方模块 node-fetch 替代实现。
fetch()
node-fetch
除了用于兼容浏览器标准fetch实现的 node-fetch 模块外,axios 是最受欢迎的第三方网络请求库。
axios 是同构的,在浏览器、Node.js 里大部分API是相同的。
通过选项对象配置,即可完成 HTTP Headers 的设置工作:
require('axios')({ url: 'http://localhost:9000/', method: 'get', params: {}, withCredentials: false, // ... }).then(res=>{ console.log(res.data) }).catch(err=>{ // 状态码不为2XX console.error(err) })
除了 HTTP 请求的全部功能外,axios 还从程序设计上添加了灵活的扩展能力,包括:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在具有一定规模以上的服务端应用中,应用所需的数据、处理逻辑等,往往是分散在不同的服务器上的,这些服务器通信来交换数据,最终以一个个的HTTP或其他协议接口的形式与网页通信。
服务端应用之间的通信,一种JavaScript开发者熟悉的方式是HTTP接口通信,在SSR等前后端同构的场景下很实用。
http 内置模块
Node.js 内置模块 http 除了用于快速搭建HTTP服务,还可以作为HTTP客户端,与其他HTTP服务进行通信。
前文启动的HTTP服务
发起对上述HTTP服务的HTTP GET请求
http 模块上另一个发起请求的方法是
request()
,可以设置请求的method
。几种常用的方法在
https
内置模块上也有着相似的用法。fetch
Node.js v18 起支持兼容浏览器实现的全局
fetch()
方法,在之前的版本需要通过实验性选项启用,或使用第三方模块node-fetch
替代实现。axios
除了用于兼容浏览器标准fetch实现的 node-fetch 模块外,axios 是最受欢迎的第三方网络请求库。
axios 是同构的,在浏览器、Node.js 里大部分API是相同的。
通过选项对象配置,即可完成 HTTP Headers 的设置工作:
除了 HTTP 请求的全部功能外,axios 还从程序设计上添加了灵活的扩展能力,包括:
参考资料
The text was updated successfully, but these errors were encountered: