使用Firebase主机,我可以将所有路由设置为具有相同的目标,同时也具有api路由吗?

使用Firebase主机,我可以将所有路由设置为具有相同的目标,同时也具有api路由吗?,firebase,express,google-cloud-functions,firebase-hosting,Firebase,Express,Google Cloud Functions,Firebase Hosting,这就是我对firebase.json重写的猜测 “重写”:[ { “来源”:“/api”, “函数”:“api” }, { “来源”:“**”, “目的地”:“/index.html” } ] 重写是否按顺序计算(在这种情况下,在**之前先检查/api路由) 如果没有,我是否可以将所有路由发送到我的express函数,并只处理到那里的静态react文件的路由 “重写”:[ { “来源”:“**”, “函数”:“express” } ] const functions=require('fir

这就是我对
firebase.json
重写的猜测

“重写”:[
{
“来源”:“/api”,
“函数”:“api”
},
{
“来源”:“**”,
“目的地”:“/index.html”
}
]
重写是否按顺序计算(在这种情况下,在
**
之前先检查
/api
路由)

如果没有,我是否可以将所有路由发送到我的express函数,并只处理到那里的静态react文件的路由

“重写”:[
{
“来源”:“**”,
“函数”:“express”
}
]
const functions=require('firebase-functions'))
const express=require('express')
const path=require('path');
const app=express()
//初始化中间件
use(express.json({extended:false}));
//定义路线
app.use('/api/users',require('/routes/users');
app.use('/api/auth',require('./routes/auth');
应用程序使用('/api/contacts',要求('./路由/联系人');
//为生产中的静态资产提供服务
if(process.env.NODE_env===‘生产’){
//设置静态文件夹
应用程序使用(express.static('client/build'));
应用程序获取(“*”,(请求,请求)=>
res.sendFile(path.resolve(uuu dirname,'client','build','index.html'))
);
}
exports.express=functions.https.onRequest(应用程序)
重写是否按顺序计算(在本例中,在**之前先检查/api路由)

对。这在以下文件中明确说明:

重要提示:在“重写”属性中,宿主应用由第一条规则定义的重写,并使用与请求的路径匹配的URL模式。因此,您需要在“重写”属性中有意地对规则进行排序


这使您可以同时提供动态和静态内容。

谢谢Doug!!这是非常清楚的。第二种方法也有效吗?当然,你当然可以尝试一下,但成本会更高,效率可能会更低。