Node.js请求补丁

时间:2019-01-23 13:04:17

标签: node.js promise request patch

我目前正在尝试在我的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
    });

}

2 个答案:

答案 0 :(得分:0)

我会尝试这样的事情:

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
})

答案 1 :(得分:0)

您可以将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>