Firebase云函数如何处理HTTP post方法?

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);

我已经创建了Firebase云功能应用程序, 我使用
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中的概述…那么前面的选项调用呢?