Node.js中使用fetch按JSON格式发post请求的问题怎么解决


本文小编为大家详细介绍“Node.js中使用fetch按JSON格式发post请求的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js中使用fetch按JSON格式发post请求的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Node.js 中使用fetch 按JSON格式发post请求

最近在测试一个api,可以用curl命令直接访问,指定header相关配置,request body(JSON),成功后返回一个JSON。

原本想搞个静态页面html,在script标签里用fetch做个简单的demo的,结果就遇到跨域问题。遂使用后端请求,就想到了Nodejs。

既然有现成的工具,那就使用呗。

环境node --version: 18.15.0

1.全局安装express-generator:

npmiexpress-generator-g

2.生成一个测试项目:

expressnodepost

3. 安装依赖

cdnodepostnpminstall

4.试运行(没有意外的话可以在浏览器输入 localhost:3000,看到Express 欢迎页)

npmstart

5. VSCODE编辑

code.

6.修改routers/index.js, 增加以下代码段,注意按你实际配置来(url, requestData, authkey...)

router.get('/json',(req,res,next)=>{letsuccess=true;constdata={k:'yourrealdata'};fetch('example/api/g',{method:'POST',body:JSON.stringify(data),headers:{'Content-type':'application/json;charset=UTF-8','Authorization':'yourrealauthkeyifneccessory,otherwiseyoucouldnotconfigthisitem',},}).then((res)=>res.json()).then((json)=>console.log(json)).catch(err=>{success=false;console.log('err:',err);})res.json({success})});

7.访问 localhost:3000/json, 不出问题的话能在后端控制台查看请求结果

PLUS:

选择新版本的Node,不能低于17.5.0,否则不能直接使用fecth,在文末有补充说明。

低版本用node-fetch库或者原生的http模块, node-fetch我自己导入一直有问题,原生http模块要写不少东西,故不采用。

补充:写 Node.js,终于能用 Fetch 发请求了

Node.js 支持 Fetch API 啦!

在以前,使用原生的 Node.js API 发送一个 HTTP 请求非常麻烦,你可能要写下面的代码:

consthttp=require('http')constoptions={hostname:'nodejs',port:443,path:'/todos',method:'GET'}constreq=http.request(options,res=>{console.log(`状态码:${res.statusCode}`)res.on('data',d=>{process.stdout.write(d)})})req.on('error',error=>{console.error(error)})req.end()

所以通常,我们可能会引入一些第三方的 NPM 包,比如 axios、needle、node-fetch、request 这些。

在最新的 Node.js v17.5 版本中,增加了对 Fetch API 的支持,所以无需借助这些第三方 HTTP 请求库啦。

Fetch API 可能大家都比较熟悉了,他是当前最流行的跨平台 HTTP Client API ,目前已经可以在浏览器和 Web/Service Workers 中运行,当前 Web 环境里用到最多的请求方式应该就是它了。

Node.js 中的Fetch API 基于 Undici 实现,它提供了一个 WHATWG 标准接口来获取资源,并且也是基于 Promise 的,使用方式基本和浏览器中一致,包括四个核心模块:

  • fetch() - 用于发起请求的函数

  • Headers 类 - 用于处理请求头和响应头

  • Request 类 - 表示传入请求的实例

  • Response 类 - 表示传入响应的实例

constres=awaitfetch('conardli.top');constjson=awaitres.json();console.log(json);

其实这并不是简单的支持了一个新的原生 HTTP 请求库那么简单,这意味着很多之前在 Web 中用到 FetchNPM 包也可以在 Node.js 里以同样的方式工作了,这些包同样可以实现跨平台兼容了~

Node.js v17.5 中,它还是个实验特性,现在想要试用的话可以通过 node --experimental-fetch flag 开启。

读到这里,这篇“Node.js中使用fetch按JSON格式发post请求的问题怎么解决”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注主机评测网行业资讯频道。


上一篇:公网使用SSH远程登录macOS服务器的方法是什么

下一篇:Mapper类中存在名称相同的方法重载报错怎么解决


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器