【问题标题】:Nodejs request patchNodejs请求补丁
【发布时间】:2022-03-07 23:00:25
【问题描述】:

我目前正在尝试在我的 nodejs 应用程序中实现补丁请求。但我似乎无法让它工作。我已经确定我的数据结构是正确的。

我尝试了一些不同的方法,例如:返回我的 request.patch 和 promise,但似乎什么也没发生。

var request = require('request');
exports.patchOwner = function (options) {
    var urlEncodedParams = encodeURI(options.nodeId);
    request.patch(url + '/owner/owners/' + urlEncodedParams, JSON.stringify(options.body), function (err, res, body) {
            //body is empty
    });

}

【问题讨论】:

  • err 也是空的吗?
  • 是的,我还确保我可以通过邮递员之类的工具进行修补
  • 好的,res 长什么样子?
  • 为空----
  • bodyres 应该返回什么?也许您的服务器在 patch 常规调用中只返回 err

标签: node.js promise request patch


【解决方案1】:

我会尝试这样的:

var fullUrl = url + '/owner/owners/' + encodeURI(options.nodeId);
var body = JSON.stringify(options.body);
request.patch({ url: fullUrl, body: body }, function (err, res, body) {
  // do your thing
})

【讨论】:

    【解决方案2】:

    您可以使用 Express 进行 patch 请求

    server.js

    app.patch("/data/:id/:patch", (q, r) => {
        let id=q.params.id;
        let id=q.params.patch;
    
        //your logic
    
        r.send({ res: "*PATCHED*" });
    });
    

    client.js

    let ajax = (type, url, data, callback) => {
        let xhr = new XMLHttpRequest();
        xhr.open(/* GET */type, url, true/* ASYNC */);
        xhr.onload = () => callback(xhr.status === 200 ? JSON.parse(xhr.response).res : xhr.status);
        xhr.setRequestHeader('Content-Type', 'application/json');
    
        if (type === "POST")
            xhr.send(JSON.stringify(data));
        else
            xhr.send();//PUT - PATCH - DELETE - GET
    }
    

    用法

    ajax('PATCH', '/data/1/something_to_patch', null, (res)=>{alert(res)});
    

    GETPUTDELETE 的逻辑相同。

    但对于POST

    server.js

    app.post("/data", (q, r) => {
        let body_data = JSON.stringify(q.body);
        r.send({ res: "*POST: " + body_data + "*" });
    });
    

    客户端;用js发布数据:

    <script>
        let data = {
            "id": 1,
            "name": "AJAX_POST"
        }
    
        ajax('POST', '/data', data, (res)=>{alert(res)});
    </script>
    

    客户端;发帖形式:

    <form action="/data" method="POST">
        <input name="id" type="hidden" value="2" />
        <input name="name" type="hidden" value="FORM_POST" />
        <input type="submit" value="FORM_POST" />
    </form>
    

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 2013-11-16
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2021-05-10
      • 2015-07-17
      相关资源
      最近更新 更多