Firebase云函数如何处理HTTP post方法?
我已经创建了Firebase云功能应用程序, 我使用Firebase云函数如何处理HTTP post方法?,firebase,google-cloud-functions,Firebase,Google Cloud Functions,我已经创建了Firebase云功能应用程序, 我使用https.onRequest创建了函数。 并使用req.body获取数据,但那里没有数据 Firebase云函数可以处理HTTP POST方法吗 这是我的示例代码:- var functions = require('firebase-functions'); exports.testPost = functions.https.onRequest((req, res) => { console.log(req.body);
https.onRequest
创建了函数。
并使用req.body
获取数据,但那里没有数据
Firebase云函数可以处理HTTP POST方法吗
这是我的示例代码:-
var functions = require('firebase-functions');
exports.testPost = functions.https.onRequest((req, res) => {
console.log(req.body);
});
我由postman使用POST方法进行了测试,但没有在Firebase日志中显示结果。可能您的项目尚未设置为与Firebase数据库通信。从终端尝试以下操作:
npm安装-g firebase工具
然后在项目文件夹中,运行以下命令并使用凭据登录
firebase登录
然后
firebase初始化函数
这将创建一个包含index.js、package.json和node_模块的文件夹
如果您正确地使用了Postman,那么其余的代码应该可以工作。我也打算这样做。我认为应该采用的方法是检查函数体中的
request.method
。一种可能的方法是:
if (request.method != "POST") {
respond.status(400).send("I am not happy");
return;
}
// handle the post request
这里有一些关于请求对象的细节参考:基于Firebase构建的函数也可以使用Express.js路由器来处理GET/POST/PUT/DELETE等。。。完全受Google支持,是实现这些类型功能的推荐方式 更多文档可在此处找到: 下面是一个基于Node.js构建的工作示例
const functions = require('firebase-functions');
const express = require('express');
const cors = require('cors');
const app = express();
// Automatically allow cross-origin requests
app.use(cors({ origin: true }));
app.get('/hello', (req, res) => {
res.end("Received GET request!");
});
app.post('/hello', (req, res) => {
res.end("Received POST request!");
});
// Expose Express API as a single Cloud Function:
exports.widgets = functions.https.onRequest(app);
然后,运行firebase deploy,这将编译代码并创建新的“小部件”功能。注意:您可以将小部件重命名为任何您想要的名称。最终,它将生成调用函数的URL。Firebase函数支持GET、POST、PUT、DELETE和OPTIONS方法,您可以检查触发函数的方法
// Check for POST request
if(request.method !== "POST"){
res.status(400).send('Please send a POST request');
return;
}
然后从POST
请求中获取数据(例如JSON类型)将出现在请求的标题中
const postData = request.body;
// for instance
const format = req.body.format;
// query string params
let format = req.query.format;
云函数可以处理POST。请显示您正在发送的请求正文,最好还有一个用于测试的curl命令行。您找到解决方案了吗?我期待做同样的事情。总是终止你的功能。它的工作。显示您的邮递员设置。问题是关于使用Firebase云函数处理post请求。它与使用firebase cli登录firebase无关。
functions.https.onCall()
实际上用于简单的“函数”类型调用。例如,使用云函数客户端的addMessage()、retrieveMessage()。使用functions.https.onRequest()
它允许一个更像Rest(post、put、delete方法)的api,但您必须使用一个成熟的客户端。看到这个答案-这是干净的,但它删除了所有不同API调用作为函数直接在firebase中的概述…那么前面的选项调用呢?