我想發送一個 put 請求來修改我的 JSON 檔案的命令部分。這是我的 JSON;
{
"users": [
{
"hostname": "xxx.xxx.xxx.xx",
"password": "password1",
"command": "command1",
"id": 1
},
{
"hostname": "xxx.xxx.xxx.xx",
"password": "password2",
"command": "command2",
"id": 2
},
{
"hostname": "xxx.xx.xx.xxx",
"password": "password3",
"command": "command3",
"id": 3
}
]
}
在 App.js 中,我發送這樣的 put 請求;
stopPC(id){
axios.put('http://localhost:3002/users/' id,{
command: 'stop'
})
}
我試過這個;
axios({
method: 'put',
url: 'http://localhost:3002/users/' id,
data: {
hostname: id.hostname,
password: id.password,
command: 'stop'
}
});
在這兩種情況下,我在 JSON 檔案中都得到了以下輸出。
{
"users": [
{
"command": "stop",
"id": 1
},
{
"hostname": "xxx.xxx.xxx.xx",
"password": "password2",
"command": "command2",
"id": 2
},
{
"hostname": "xxx.xxx.xxx.xx",
"password": "password3",
"command": "command3",
"id": 3
}
]
}
我只想更改命令資訊,同時保持主機名和密碼資訊相同。我不確定我哪里出錯了,如果你能提供幫助,我會很高興。
uj5u.com熱心網友回復:
如果id是型別Number(我認為是),id.hostname并且id.password會是undefined,所以基本上
{
hostname: id.hostname,
password: id.password,
command: 'stop'
}
和
{
command: 'stop'
}
與 Javascript 相同,并且您有效地發送了相同的有效負載。我認為解決這個問題的最好方法是通過更改請求中的屬性來改變后端處理傳入有效負載的方式。如果您無權更改后端,則必須獲取或讀取當前存盤的值并在有效負載中使用它。就像是
user = axios.get('http://localhost:3002/users/' id).then(r => r.data)
axios.put('http://localhost:3002/users/' id,{
hostname: user.hostname,
password: user.password,
command: 'stop'
})
此外,PUT用于替換記錄和PATCH更新現有記錄,這聽起來更像您想要做的。也許只是嘗試axios.patch,它可能會奏效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/451376.html
標籤:javascript 反应式 api axios 放
