NodeJS - 使用节点获取发送 JSON 对象参数

Posted

技术标签:

【中文标题】NodeJS - 使用节点获取发送 JSON 对象参数【英文标题】:NodeJS - Send JSON object parameters with node-fetch 【发布时间】:2019-10-13 17:13:41 【问题描述】:

我正在尝试通过 GitHub API 创建一个 webhook。 docs 说我需要提供一个 config 参数,它应该是一个对象,但我不确定如何在 URL 参数中发送 JSON。这是我尝试过的:

fetch(`https://api.github.com/repos/$repo.full_name/hooks?config="url": "https://webhooks.example.com", "content_type": "json"`, 
    method: "POST",
    headers: 
        Accept: "application/vnd.github.v3+json",
        Authorization: `token $account.accessToken`
    
);

fetch(`https://api.github.com/repos/$repo.full_name/hooks?config.url=https://webhooks.example.com&config.content_type=json`, 
    method: "POST",
    headers: 
        Accept: "application/vnd.github.v3+json",
        Authorization: `token $account.accessToken`
    
);

它们都导致以下错误:


    "message": "Validation Failed",
    "errors": [
        
            "resource": "Hook",
            "code": "custom",
            "message": "Config must contain URL for webhooks"
        
    ],
    "documentation_url": "https://developer.github.com/v3/repos/hooks/#create-a-hook"

如何正确发送 JSON 对象?我正在寻找使用node-fetch的解决方案

【问题讨论】:

【参考方案1】:

当您进行发布请求时,暗示会有一个有效负载,您正在使用的库将期待一个包含您的有效负载的 body 属性。

所以添加

fetch('https://api.github.com/repos/$repo.full_name/hooks') 
    method: "POST",
    headers: 
        Accept: "application/vnd.github.v3+json",
        Authorization: `token $account.accessToken`
    ,
    body:JSON.stringify(yourJSON) //here this is how you send your datas
);

node-fetch 会将您的请求发送给您。

如果您想了解更多详细信息,我会扩展我的答案

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods在这里快速描述不同的http请求类型(动词)

【讨论】:

以上是关于NodeJS - 使用节点获取发送 JSON 对象参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MongooseMap 转换为 JSON 对象以将其从 Node js 发送到 React?

NodeJS:从 JSON 中提取数据,修改对象并将其发送回同一个 JSON 文件

如何将 JSON 数据从节点 js 脚本发送到不同服务器上的 HTML 文件

使用 Bluebird 将所有 csv 文件读入节点 js 中的 1 个 JSON 对象数组

在 Angular 中从 nodejs 获取 JSON

如何使用 json2csv nodejs 模块将 JSON 对象解析为 CSV 文件