在开发 Web 应用时,我们经常需要向其他服务发送 HTTP 请求获取数据。在 Node.js 中,我们可以使用内置的 http
模块来发送 HTTP 请求,但是这个模块的 API 不太友好,而且需要手动处理很多细节。为了简化 HTTP 请求的过程,我们可以使用第三方库 node-fetch
,它提供了简洁的 API,可以让我们轻松地发送 HTTP 请求。
本文将介绍如何在 Express.js 中使用 node-fetch
发送 HTTP 请求,并提供示例代码和注意事项。
安装 node-fetch
首先,我们需要在项目中安装 node-fetch
。可以使用 npm 或 yarn 安装:
npm install node-fetch
yarn add node-fetch
发送 GET 请求
使用 node-fetch
发送 GET 请求非常简单,只需要传入请求的 URL 即可。以下是一个示例:
const fetch = require('node-fetch'); app.get('/api/users', async (req, res) => { const response = await fetch('https://jsonplaceholder.typicode.com/users'); const users = await response.json(); res.json(users); });
在上面的代码中,我们使用 fetch
函数发送了一个 GET 请求,请求的 URL 是 https://jsonplaceholder.typicode.com/users
。然后,我们使用 await
等待响应,并使用 json
方法将响应体转换为 JSON 对象。最后,我们将 JSON 对象作为响应发送给客户端。
发送 POST 请求
使用 node-fetch
发送 POST 请求也很简单,只需要在 fetch
函数中传入一个配置对象,该对象包含请求方法、请求头和请求体等信息。以下是一个示例:
-- -------------------- ---- ------- ----- ----- - ---------------------- ---------------------- ----- ----- ---- -- - ----- ---- - ------------------------- ----- -------- - ----- --------------------------------------------------- - ------- ------- -------- - --------------- ------------------ -- ---- --- ----- ---- - ----- ---------------- --------------- ---展开代码
在上面的代码中,我们使用 fetch
函数发送了一个 POST 请求,请求的 URL 是 https://jsonplaceholder.typicode.com/users
。我们将请求体转换为 JSON 字符串,并将其作为 fetch
函数的 body
参数传入。我们还指定了请求方法为 POST
,并设置了请求头的 Content-Type
为 application/json
。然后,我们使用 await
等待响应,并将响应体转换为 JSON 对象。最后,我们将 JSON 对象作为响应发送给客户端。
注意事项
在使用 node-fetch
发送 HTTP 请求时,需要注意以下事项:
node-fetch
返回的是一个 Promise 对象,需要使用await
或then
处理响应。- 如果请求失败,
node-fetch
不会抛出异常,而是返回一个表示失败的响应对象。我们可以通过检查响应的ok
属性来判断请求是否成功。 node-fetch
默认不会跟随重定向,如果需要跟随重定向,需要手动设置redirect
选项。- 如果需要发送的请求体是一个 FormData 对象,需要手动设置请求头的
Content-Type
为multipart/form-data
。
结论
在 Express.js 中使用 node-fetch
发送 HTTP 请求非常方便,可以让我们轻松地获取数据并处理响应。在实际开发中,我们可以根据需要对请求进行定制,以满足不同的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67618b27856ee0c1d4f98bb9