web-dev-qa-db-fra.com

Comment les fonctions de Firebase Cloud gèrent la méthode de publication HTTP?

J'ai créé l'application Firebase Cloud Functions, j'ai créé une fonction avec https.onRequest. et obtenez des données avec req.body mais il n'y a pas de données.

Les fonctions Cloud de Firebase peuvent-elles gérer HTTP POST?

Voici mon exemple de code: -

var functions = require('firebase-functions');

exports.testPost = functions.https.onRequest((req, res) => {
    console.log(req.body);
});

J'ai testé par le facteur avec la méthode POST mais je n'ai pas montré le résultat dans le journal Firebase.

15
iamcmnut

Les fonctions construites sur Firebase peuvent également utiliser des routeurs Express.js pour gérer GET/POST/PUT/DELETE, etc.

Plus de documentation peut être trouvée ici:

https://firebase.google.com/docs/functions/http-events

Voici un exemple de travail basé sur 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);

Ensuite, exécutez firebase deploy, et cela devrait compiler votre code et créer la nouvelle fonction "widgets". Remarque: vous pouvez renommer les widgets comme vous le souhaitez. En fin de compte, il générera une URL pour appeler la fonction.

16
nukalov

J'ai l'intention de faire la même chose. Je pense que l'approche devrait être de vérifier le request.method dans le corps de la fonction. Une approche probable peut être:

if (request.method != "POST") {
     respond.status(400).send("I am not happy");
     return;
}

// handle the post request

Voici quelques références aux détails concernant ce que contient l'objet de demande: https://firebase.google.com/docs/functions/http-events

6