node.js 怎么做服务器端来请求第三方 api

2020-06-19 09:17:06 +08:00
 BaiLinfeng
node.js 怎么做服务器端来请求第三方 api,在让前端直接请求服务器拿数据
6997 次点击
所在节点    Node.js
40 条回复
ChanKc
2020-06-19 09:54:55 +08:00
哈哈,你的标题就错了
你要找的是一个在 node 环境下的客户端库,而不是服务端
axios 就是这样的客户端
BaiLinfeng
2020-06-19 09:56:03 +08:00
@ChanKc 标题没有错哦,我要的就算在服务器搭建接口来请求第三方 api
maplelin
2020-06-19 09:56:33 +08:00
@BaiLinfeng #20 楼主没写过后端吗,这些都是后端技能的基础,如果都没有接触过的话,那你估计得一段时间去学了,建议对着文档一点点撸
BaiLinfeng
2020-06-19 09:57:53 +08:00
@maplelin 后端没学过,还是看在 node 是基于 js 才选择的 node 来研究
npm
2020-06-19 09:58:54 +08:00
感觉你要不用 egg.js 吧?

express 很多都得要自己封装,而 egg.js 很多已经帮你封装好了,并且中英文文档都很详细。

YouTube 和 B 站上也有 egg.js 的教程
BaiLinfeng
2020-06-19 10:01:54 +08:00
@npm 我选择的是 node+express+axios,主要是自己来使用的接口,所以才自己来搭建的。
youxiachai
2020-06-19 10:02:30 +08:00
ls 说了这么多...lz 没听懂..我说一个比较野的路子....
用 node 调 curl...
curl 或者 wget 总会用了吧...
BaiLinfeng
2020-06-19 10:04:06 +08:00
@youxiachai 我正在用楼上的铁汁们说的办法,实际上是直接把他们的代码扣下来 const axios = require('axios');

......

app.get("/",async (req,res)=>{
const result = await axios.get((具体内容看 axios 文档))
ses.send("响应给前端的内容")
})
,我有不同的路径需要单独写路由吗?
npm
2020-06-19 10:07:07 +08:00
@BaiLinfeng 嗯,实现了就好
youxiachai
2020-06-19 10:09:15 +08:00
@BaiLinfeng 这个应该是个工具方法,,你的不同路径调用一下这个方法就好了....
96412hj
2020-06-19 10:09:17 +08:00
你说的是转发吧,任何一个服务器语言都可以转发的呢,你 google,nodejs 转发接口 demo,一大堆
guanhui07
2020-06-19 10:11:57 +08:00
用 koa2 request 包
libook
2020-06-19 10:22:44 +08:00
直接使用 Node API 来发起请求:
HTTP: https://nodejs.org/dist/latest-v14.x/docs/api/http.html#http_http_request_options_callback
HTTPS: https://nodejs.org/dist/latest-v14.x/docs/api/https.html#https_https_request_options_callback
入参和出参是什么 Class 的对象就看对应 Class 的文档。另外 Node 异步非阻塞以及 Callback 机制得懂。

广泛使用的第三方请求库 Axios:
https://github.com/axios/axios
得懂得 JS 的 Promise 、async/await 。

JS 基础不行的话看 MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide
Node 基础不行的话看 Guide,花不了多长时间: https://nodejs.org/en/docs/guides/

作为程序员英语得过关。

你可以在学会走之前先学会跑,但是总得先学会如何动腿; Node 虽然上手很简单,但是基本的特性还是得学的,API 文档还是得浏览一下的。

不积跬步,无以至千里。
easonHHH
2020-06-19 10:26:23 +08:00
用不同的接口你想办法把配置传到后端呗,方法多了去了,通过路由,GET 参数,POST 内容都行啊
1 、根据路径区分就用 app.use('/a/b')这里面配置,支持正则表达和:xx 等匹配方法
// GET /file/javascripts/jquery.js
console.dir(req.params[0])
// => 'javascripts/jquery.js'
2 、GET 参数方法:
// GET /search?q=tobi+ferret
console.dir(req.query.q)
// => 'tobi ferret'
3 、还可以用 POST 方法
app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded

app.post('/profile', function (req, res, next) {
console.log(req.body)
res.json(req.body)
})
这些都是文档里面写得清清楚楚的,你看一下文档里面 request(req)的属性吧
https://expressjs.com/zh-cn/4x/api.html#req.body
yinjunjian0
2020-06-19 11:08:05 +08:00
我寻思看请求库的文档不是更快更好理解吗
Yourshell
2020-06-19 12:27:00 +08:00
这不是反代吗
ChanKc
2020-06-19 12:45:09 +08:00
@BaiLinfeng 请求别人就是客户端
JackHuang90
2020-06-19 16:53:23 +08:00
axios 或者 自己封装 fetch,fetch 我觉得更自由。
zhengdai1990
2020-06-19 22:31:46 +08:00
直接 pipe
BaiLinfeng
2020-06-24 22:18:54 +08:00
当时想回复的消息,和需求实现的想法太多了,但是 V2EX 禁止发言太快

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/682914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX