![](/img/trans.png)
[英]How to send POST request to Django API from ReactJS web app?
[英]How to send a POST request from App Script to Firebase with an array
我正在尝试将 POST 请求从 App Script 应用程序发送到 firebase 云 function。 但我无法在此请求中正确发送 arrays 。 请求以凌乱的方式发送数组,导致云 function 无法正确读取
我正在使用以下代码:
const data = {
var1: 'string',
var2: {name: 'object'},
var3: new Date(),
var4: [1, 2, 3],
var5: [{name: 'any object'}, {name: 'inside an array'}],
}
const url = "https://us-central1-my-app.cloudfunctions.net/executeFunction";
const options = {
method: "post",
"Content-Type": "application/json", //I tried to change this content-type for other options
payload: data
};
const request = UrlFetchApp.fetch(url, options);
在服务器端,我尝试使用以下方式读取数据:
export const executeFunction = functions.https.onRequest(async(req, res) => {
//option 1
const data = JSON.parse(req.body);
res.send(JSON.stringify(data));
//option2
const data = req.body;
res.send(JSON.stringify(data);
})
但在服务器上req.body
返回我以下值:
{
"var1":"string",
"var2":{"name":"object"},
"var3":"2020-07-14T18:45:21.946Z",
"var4":[Ljava.lang.Object;@5e1b03dd, // :(
"var5":[Ljava.lang.Object;@19d93f99 // :(
如何正确获取数组值?
我怀疑它可能与字符集有关,但我已经尝试在options
object 上使用"Content-Type": "application/json; charset=utf-8"
并且它不起作用。
关于如何解决它的任何想法? :)
更新:
谢谢@皮卡丘
我必须更改 2 件事: - 对有效负载进行字符串化 - 将选项的键从“Content-Type”更改为“contentType”
这里的代码:
const options = {
method: "post",
contentType: "application/json", //changed here
payload: JSON.stringify(data) //and here
};
const request = UrlFetchApp.fetch(url, options);
你几乎明白了。 来自 UrlFetcgApp 的带有 json 有效负载的 POST 请求应将有效负载序列化:
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)
const options = {
...
payload: JSON.stringify(data)
};
And a firebase cloud function using a https trigger automatically parses the json body so there is no need to parse or stringify it.
export const executeFunction = functions.https.onRequest(async(req, res) => {
const data = req.body;
console.log(data.var1);
console.log(data.var2);
console.log(data.var3);
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.