gpt4 book ai didi

javascript - http 模块(带有 browserify 的 node.js)不使用 PATCH 方法编写请求正文

转载 作者:可可西里 更新时间:2023-11-01 17:07:21 27 4
gpt4 key购买 nike

我一直在开发一个网络客户端来与 REST API 服务器交互,并且想使用 PATCH 方法。

尽管我尝试将请求主体写入 PATCH 的请求中,但我发现主体仍然是空的。 PUT 或 POST 以相同的方式工作正常。

我可以改用 PUT,但是有人知道我对 http 模块的使用是否有误吗?

提前谢谢你。

var http = require('http');

module.exports = {

patch: function(path, data, done, fail){
var jsonData = JSON.stringify(data);
var options = {
headers: {
'Content-Type':'application/json;charset=UTF-8',
'Content-Length':jsonData.length,
}
};
var req = this.request(path, "PATCH", done, fail, options);

// THIS CODE DOESN'T WRITE jsonData INTO REQUEST BODY
req.write(jsonData);
req.end();
},

request: function(path, method, done = () => {}, fail = () => {}, options = { headers: {} } ){
options.path = path;
options.method = method;
return http.request(options, function(res){
var body = '';
res.setEncoding('utf8');
res.on("data", function(chunk){
body += chunk;
});
res.on("end", function(){
// process after receiving data from server
});
}).on("error", function(e) {
// process after receiving error
});
}
}

最佳答案

我最终使用了 node.js 的“请求”库。以下代码有效:

var request = require("request");
(...)

function patch(path, entity){
var deferred = q.defer();
var escapedPath = escapeSpaces(path);
AuthProvider.retrieveToken().done(function (authToken){
var headers ={
'OData-MaxVersion': '4.0',
'OData-Version': '4.0',
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Bearer '+ authToken,
'Accept': 'application/json'
}

var options = {
url: "https://"+resourceApiId+"/api/data/v8.0/"+escapedPath,
method: 'PATCH',
headers: {
'OData-MaxVersion': '4.0',
"OData-Version": '4.0',
"Content-Type": "application/json; charset=utf-8",
"Authorization": 'Bearer '+ authToken,
"Accept": "application/json"
},
json: entity
};

request(options, function(error, response, body){
if (!error) {
console.log("patchrequest statuscode: "+response.statusCode )
deferred.resolve(true);
}
deferred.reject(error);
}
);
});

return deferred.promise;
}

关于javascript - http 模块(带有 browserify 的 node.js)不使用 PATCH 方法编写请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36305338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com