微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试在 post 请求中写入数据后,“属性丢失并且它不是可选的”

如何解决尝试在 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();
}

控制台输出

console output

解决方法

由于 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 举报,一经查实,本站将立刻删除。