目標:將 {"username": myuser, "password": mypswd} 發送到 API 端點,以便我可以獲取令牌以與 API 進行進一步互動。
編碼:
// Variation # 1
let res = await axios.post(
url, {
"username": args.username,
"password": args.password
}).then(res => { console.log(res) })
// Variation # 2
var params = new FormData() // required npm install form-data
params.append("username", args.username)
params.append("password", args.password)
let res = await axios.post(
url, params
}).then(res => { console.log(res) })
// Variation # 2a
var params = new FormData() // required npm install form-data
params.append("username", args.username)
params.append("password", args.password)
let res = await axios.post(
url, params, {
headers: {
'content-type': 'multipart/form-data'
}
}
}).then(res => { console.log(res) })
// Variation # 3
var params = new URLSearchParams()
params.append("username", args.username)
params.append("password", args.password)
let res = await axios.post(
url, params
}).then(res => { console.log(res) })
以上所有似乎都錯誤地傳遞了帖子資料。使用 Wireshark,當我檢查請求時,傳遞的資料是[object Object]當我檢查請求資料包時。
如果我在 PostMan 中對該 API 端點運行相同的呼叫并檢查資料包,我會看到以下內容:
Content-Type: multipart/form-data;
boundary=--------------------------074168144775996161656376
Content-Length: 293
----------------------------074168144775996161656376
Content-Disposition: form-data; name="username"
any.user.name
----------------------------074168144775996161656376
Content-Disposition: form-data; name="password"
MyPassword
當然,PostMan 會給出預期的令牌作為回應。
誰能發現為什么任何/所有這些變體的編碼都失敗了?#1 是 axios.post檔案的建議。其他是我在本網站和其他地方描述的各種建議的補救措施。這似乎只是在我嘗試將我的代碼升級到 Vue3 時才出現的。我的 Vue2 代碼正在使用 #2 (FormData)。
uj5u.com熱心網友回復:
沒有理由使用 Axios。這應該有效:
const args = {
"username": "someusername",
"password": "somepassword"
}
const data = {
"username": args.username,
"password": args.password
}
const url = "https://google.com"
fetch(url, {
method: "POST",
body: JSON.stringify(data)
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457865.html
