如何在nodejs中实现curl u选项

bxpogfeg  于 2023-01-08  发布在  Node.js
关注(0)|答案(2)|浏览(195)

我正在尝试在node中实现curl请求。在curl中,您可以执行以下POST请求:

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "client_id:client_secret" \
  -d "grant_type=client_credentials"

我知道如何使用节点http模块设置报头和写入数据负载,但是如何使用http模块实现-u client_id:client_secret呢?

gudnpqoy

gudnpqoy1#

目前我还不知道nodejs,但是既然你知道如何从nodejs设置头文件-H,我相信我现在可以帮助你了!-u client_id:client_secret相当于下面的一个:

-H "Authorization: Basic XXXXXXXXXXXXX"

这里XXXXXXXXXXXXX是字符串client_id:client_secret的base64,不要忘记中间的:

kxe2p93d

kxe2p93d2#

curl -u base64对"username:password"字符串进行编码,并将结果附加为报头。
在nodejs中,只需将auth字段添加到http.request的选项中即可。

const req = http.request({
  hostname: "api.sandbox.paypal.com",
  path: "/v1/oauth2/token",
  auth: "client_id:client_secret",
  // ...

在幕后,node是base64编码字符串并添加格式化的头,如果你使用的是另一个http客户端,知道如何手动添加头也会很有帮助。

  1. base64编码您的"username:password"Buffer module
const credentials = Buffer.from("client_id:client_secret").toString("base64");

1.添加base64编码字符串作为标头,格式如下:

const req = http.request({
  hostname: "api.sandbox.paypal.com",
  path: "/v1/oauth2/token",
  headers: {
    Authorization: `Basic ${credentials}`
  // ...

相关问题