フォームエンコードされてサーバーに POST 送信したいパラメータがいくつかあります。
{
'userName': '[email protected]',
'password': 'Password!',
'grant_type': 'password'
}
私はリクエストを次のように送信しています(現在はパラメータなし)。
var obj = {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
},
};
fetch('https://example.com/login', obj)
.then(function(res) {
// Do stuff with result
});
フォームエンコードされたパラメータをリクエストに含めるにはどうすればよいですか?
ベストアンサー1
次のように、x-www-form-urlencoded ペイロードを自分で組み立てる必要があります。
var details = {
'userName': '[email protected]',
'password': 'Password!',
'grant_type': 'password'
};
var formBody = [];
for (var property in details) {
var encodedKey = encodeURIComponent(property);
var encodedValue = encodeURIComponent(details[property]);
formBody.push(encodedKey + "=" + encodedValue);
}
formBody = formBody.join("&");
fetch('https://example.com/login', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: formBody
})
注意:React Nativeの代わりに(十分に最新の)ブラウザを使用している場合は、代わりにfetch
URLSearchParams
オブジェクトをボディとして使用します。フェッチ標準状態body
がオブジェクトである場合はURLSearchParams
、 としてシリアル化する必要がありますapplication/x-www-form-urlencoded
。ただし、React Nativeではこれを行うことはできません。React Nativeでは実装しないURLSearchParams
。