Firebase-tools: Fonction Cloud : /<segment>/** la réécriture ne fonctionne pas</segment>

Créé le 10 juil. 2017  ·  3Commentaires  ·  Source: firebase/firebase-tools

j'ai la fonction cloud

const app = express()

app.get('/ping', (req, res) => {
  res.send('pong');
})

exports.api = functions.https.onRequest(app)

et ça marche bien

https://...cloudfunctions.net/api/ping
pong

Ensuite, j'ajoute la configuration suivante

{
  "hosting": {
    "public": "public",
    "rewrites": [ {
      "source": "/api/**", "function": "api"
    } ]
  }
}

et essayez de l'appeler à partir de l'URL de l'application et cela échoue.

https://...firebaseapp.com/api/ping
404

Si j'utilise réécrire tous les appels à mes fonctions comme ceci

{
  "hosting": {
    "public": "public",
    "rewrites": [ {
      "source": "**", "function": "api"
    } ]
  }
}

alors ça marche

https://...firebaseapp.com/ping
pong

Ai-je raté quelque chose ici ou ce scénario n'est-il pas pris en charge ?

Il y a le blog qui écrit à ce sujet, qui utilise et segmente en réécriture :

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html

Commentaire le plus utile

Vous devez ajouter /api au début de votre itinéraire express. Les préfixes ne sont pas
coupé lorsque les URL sont envoyées à la fonction cloud.

Le dimanche 9 juillet 2017, 23h27, roosi [email protected] a écrit :

j'ai la fonction cloud

application const = express()

app.get('/ping', (req, res) => {
res.send('pong');
})

exports.api = functions.https.onRequest(app)

et ça marche bien

https://...cloudfunctions.net/api/ping
pong

Ensuite, j'ajoute la configuration suivante

{
"hébergement": {
"public": "public",
"réécrit": [ {
"source": "/api/**", "fonction": "api"
} ]
}
}

et essayez de l'appeler à partir de l'URL de l'application et cela échoue.

https://...firebaseapp.com/api/ping
404

Si j'utilise réécrire tous les appels à mes fonctions comme ceci

{
"hébergement": {
"public": "public",
"réécrit": [ {
"source": "**", "fonction": "api"
} ]
}
}

alors ça marche

https://...firebaseapp.com/ping
pong

Ai-je raté quelque chose ici ou ce scénario n'est-il pas pris en charge ?

Il y a le blog qui écrit à ce sujet, qui utilise et segmente en réécriture :

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http://url

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/392 , ou désactiver le
fil
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.

Tous les 3 commentaires

Vous devez ajouter /api au début de votre itinéraire express. Les préfixes ne sont pas
coupé lorsque les URL sont envoyées à la fonction cloud.

Le dimanche 9 juillet 2017, 23h27, roosi [email protected] a écrit :

j'ai la fonction cloud

application const = express()

app.get('/ping', (req, res) => {
res.send('pong');
})

exports.api = functions.https.onRequest(app)

et ça marche bien

https://...cloudfunctions.net/api/ping
pong

Ensuite, j'ajoute la configuration suivante

{
"hébergement": {
"public": "public",
"réécrit": [ {
"source": "/api/**", "fonction": "api"
} ]
}
}

et essayez de l'appeler à partir de l'URL de l'application et cela échoue.

https://...firebaseapp.com/api/ping
404

Si j'utilise réécrire tous les appels à mes fonctions comme ceci

{
"hébergement": {
"public": "public",
"réécrit": [ {
"source": "**", "fonction": "api"
} ]
}
}

alors ça marche

https://...firebaseapp.com/ping
pong

Ai-je raté quelque chose ici ou ce scénario n'est-il pas pris en charge ?

Il y a le blog qui écrit à ce sujet, qui utilise et segmente en réécriture :

https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http://url

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/firebase/firebase-tools/issues/392 , ou désactiver le
fil
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.

@roosi J'ai également rencontré ce problème la semaine dernière. C'est ennuyeux, mais la meilleure solution que je puisse trouver pour un scénario comme celui-ci est de créer une fonction main qui héberge toutes les autres fonctions et de réécrire tous les appels d'hébergement. Cela vous permet d'appeler https://...firebaseapp.com/api/ping , par exemple.

Voir ma réponse ici pour plus de détails :
https://stackoverflow.com/a/45224176/1309346

Cette page vous a été utile?
0 / 5 - 0 notes