如何解决尝试在 post 请求中写入数据后,“属性丢失并且它不是可选的”
我正在尝试将正文数据添加到 Electron.js 的 post 请求中。但是数据写入其他一些属性。如何在请求中正确写入数据?
function tokenRequest() {
var postData = JSON.stringify({
username: USERNAME,password: PASSWORD,});
const tokenRequest = net.request({
method: 'POST',protocol: 'https:',hostname: HOST,port: PORT,path: '/api2/json/access/ticket',headers: {
'Content-Type': 'application/x-www-form-urlencoded',}
});
tokenRequest.on('response',(response) => {
console.log(`STATUS: ${response.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(response.headers)}`);
response.on('data',(chunk) => {
console.log(`BODY: ${chunk}`);
});
response.on('end',() => {
console.log('No more data in tokenRequest response.');
});
});
tokenRequest.write(postData);
tokenRequest.end();
}
控制台输出:
解决方法
由于 Proxmox 仅接受 URL 编码的 JSON 数据 (source),因此您必须将 JSON.stringify()
替换为 new URLSearchParams()
。还要在写入之前将 toString()
添加到 postData
。完整代码如下:
function tokenRequest() {
const postData = new URLSearchParams({ // <----
username: USERNAME,password: PASSWORD,})
const tokenRequest = net.request({
method: 'POST',protocol: 'https:',hostname: HOST,port: PORT,path: '/api2/json/access/ticket',headers: {
'Content-Type': 'application/x-www-form-urlencoded',},})
tokenRequest.on('response',(response) => {
console.log(`STATUS: ${response.statusCode}`)
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
response.on('data',(chunk) => console.log(`BODY: ${chunk}`))
response.on('end',() => console.log('No more data in tokenRequest response.'))
})
tokenRequest.write(postData.toString()) // <----
tokenRequest.end()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。