我目前正在尝试在我的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
});
}
答案 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)});
GET
,PUT
和DELETE
的逻辑相同。
但针对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>