繁体   English   中英

Nodejs请求补丁

[英]Nodejs 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
    });

}

我会尝试这样的事情:

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

您可以使用 Express 进行patch请求

服务器.js

app.patch("/data/:id/:patch", (q, r) => {
    let id=q.params.id;
    let id=q.params.patch;

    //your logic

    r.send({ res: "*PATCHED*" });
});

客户端.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

服务器.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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM