在 Firebase Functions HTTPS 请求中使用 Express 中间件
Using Express middleware in Firebase Functions HTTPS requests
我在将 Express 中间件与 Firebase 函数结合使用时遇到问题。在这个 example 中,一个函数被挂接到 app() 实例,如下所示:
app.get('*', (req, res) => {
res.send(`Hello ${req.user.name}`);
});
exports.authorizedHello = functions.https.onRequest(app);
如何使用 express 中间件实现多个功能?
这是我尝试解决它的方法之一,但将端点 returns 称为 404:
app.get('/authorizedHello', (request, response) => {
response.send(`Hello ${request.user.name}`);
})
app.get('/authorizedBye', (request, response) => {
response.send(`Bye ${request.user.name}`);
})
exports.authorizedHello = functions.https.onRequest(app);
exports.authorizedBye = functions.https.onRequest(app);
我确定我做错了。你能给我指出正确的方向吗?
考虑到云函数的基本路径使用您的导出名称,因此在这种情况下您的有效 URL 将是:
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedBye
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedBye
这就是示例使用 get('*', ...)
的原因。您应该会在部署命令执行后看到显示的 URL。
您有四个网址,因为您两次导出同一个 Express 应用程序。
谢谢你的好问题。你的问题是给我一个使用模板引擎的线索。也许我超出了你的问题的主题。但是,如果有人想使用像 Pug 这样的模板引擎,我只想分享。在这里查看我的示例代码。
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.set("views",__dirname+"/tmp");
app.set("view engine","pug");
app.engine('pug', require('pug').__express);
app.get("/",p3p(p3p.recommended),function(req,res){
res.render("index");
});
app.get("/login",p3p(p3p.recommended),function(req,res){
res.render("login");
});
exports.main = functions.https.onRequest(app);
然后您可以像这样访问 link。
https://us-central1-[YOURAPP].cloudfunctions.net/main/
https://us-central1-[YOURAPP].cloudfunctions.net/main/login
抱歉打扰您的问题。但是我不得不在 google 上找到我的问题,就像使用 "How to use template engine to google cloud functions" 我从来没有得到正确的答案。
我很高兴你的问题中有示例代码。这激励我做一些改进。谢谢你 。
抱歉我的英语不好:)
我在将 Express 中间件与 Firebase 函数结合使用时遇到问题。在这个 example 中,一个函数被挂接到 app() 实例,如下所示:
app.get('*', (req, res) => {
res.send(`Hello ${req.user.name}`);
});
exports.authorizedHello = functions.https.onRequest(app);
如何使用 express 中间件实现多个功能?
这是我尝试解决它的方法之一,但将端点 returns 称为 404:
app.get('/authorizedHello', (request, response) => {
response.send(`Hello ${request.user.name}`);
})
app.get('/authorizedBye', (request, response) => {
response.send(`Bye ${request.user.name}`);
})
exports.authorizedHello = functions.https.onRequest(app);
exports.authorizedBye = functions.https.onRequest(app);
我确定我做错了。你能给我指出正确的方向吗?
考虑到云函数的基本路径使用您的导出名称,因此在这种情况下您的有效 URL 将是:
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedHello/authorizedBye
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedHello
https://us-central1-<YOURAPP>.cloudfunctions.net/authorizedBye/authorizedBye
这就是示例使用 get('*', ...)
的原因。您应该会在部署命令执行后看到显示的 URL。
您有四个网址,因为您两次导出同一个 Express 应用程序。
谢谢你的好问题。你的问题是给我一个使用模板引擎的线索。也许我超出了你的问题的主题。但是,如果有人想使用像 Pug 这样的模板引擎,我只想分享。在这里查看我的示例代码。
const functions = require('firebase-functions');
const express = require("express");
const app = express();
app.set("views",__dirname+"/tmp");
app.set("view engine","pug");
app.engine('pug', require('pug').__express);
app.get("/",p3p(p3p.recommended),function(req,res){
res.render("index");
});
app.get("/login",p3p(p3p.recommended),function(req,res){
res.render("login");
});
exports.main = functions.https.onRequest(app);
然后您可以像这样访问 link。 https://us-central1-[YOURAPP].cloudfunctions.net/main/ https://us-central1-[YOURAPP].cloudfunctions.net/main/login
抱歉打扰您的问题。但是我不得不在 google 上找到我的问题,就像使用 "How to use template engine to google cloud functions" 我从来没有得到正确的答案。
我很高兴你的问题中有示例代码。这激励我做一些改进。谢谢你 。 抱歉我的英语不好:)