рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИ
const app = express()
app.get('/ping', (req, res) => {
res.send('pong');
})
exports.api = functions.https.onRequest(app)
рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
https://...cloudfunctions.net/api/ping
рдкрд╛рдВрдЧ
рдлрд┐рд░ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "/api/**", "function": "api"
} ]
}
}
рдФрд░ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
https://...firebaseapp.com/api/ping
рекрежрек
рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ
{
"hosting": {
"public": "public",
"rewrites": [ {
"source": "**", "function": "api"
} ]
}
}
рддрдм рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
https://...firebaseapp.com/ping
рдкрд╛рдВрдЧ
рдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рд▓реЗрдЦрди рд╣реИ, рдЬреЛ рдкреБрдирд░реНрд▓реЗрдЦрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдФрд░ рдЦрдВрдб рдХрд░рддрд╛ рд╣реИ:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд░реВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ /api рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рд╣реИрдВ
рдЬрдм URL рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рди рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реВрд░реНрдп, рдЬреБрд▓рд╛рдИ 9, 2017, рдкрд░ 23:27 roosi [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рди рд╣реИ
рдХреЙрдиреНрд╕реНрдЯ рдРрдк = рдПрдХреНрд╕рдкреНрд░реЗрд╕ ()
app.get('/ping', (req, res) => {
res.send ('рдкреЛрдВрдЧ');
})Exports.api = functions.https.onRequest (рдРрдк)
рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
https://...cloudfunctions.net/api/ping
рдкрд╛рдВрдЧрдлрд┐рд░ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:
{
"рдореЗрдЬрдмрд╛рдиреА": {
"рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ": "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ",
"рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ": [ {
"рд╕реНрд░реЛрдд": "/ рдПрдкреАрдЖрдИ/**", "рдлрд╝рдВрдХреНрд╢рди": "рдПрдкреАрдЖрдИ"
} ]
}
}рдФрд░ рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпреВрдЖрд░рдПрд▓ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
https://...firebaseapp.com/api/ping
рекрежрекрдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЙрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ
{
"рдореЗрдЬрдмрд╛рдиреА": {
"рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ": "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ",
"рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ": [ {
"рд╕реНрд░реЛрдд": "**", "рдлрд╝рдВрдХреНрд╢рди": "рдПрдкреАрдЖрдИ"
} ]
}
}рддрдм рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
https://...firebaseapp.com/ping
рдкрд╛рдВрдЧрдХреНрдпрд╛ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд▓реЙрдЧ рд▓реЗрдЦрди рд╣реИ, рдЬреЛ рдкреБрдирд░реНрд▓реЗрдЦрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдФрд░ рдЦрдВрдб рдХрд░рддрд╛ рд╣реИ:
https://firebase.googleblog.com/2017/06/serving-dynamic-content-with-cloud.html
http://url-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/firebase/firebase-tools/issues/392 , рдпрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
рдзрд╛рдЧрд╛
https://github.com/notifications/unsubscribe-auth/AAAD_updmJ5mvK9NFrx5v-a0lQckEhaHks5sMcRogaJpZM4OSaDu
.
@roosi рдореИрдВ рднреА рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдореИрдВ рдПрдХ main
рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://...firebaseapp.com/api/ping
рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдЙрддреНрддрд░ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ:
https://stackoverflow.com/a/45224176/1309346
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/firebase/functions-samples/blob/master/authorized-https-endpoint рдкрд░ рдЙрджрд╛рд╣рд░рдг рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд░реВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ /api рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рд╣реИрдВ
рдЬрдм URL рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рди рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реВрд░реНрдп, рдЬреБрд▓рд╛рдИ 9, 2017, рдкрд░ 23:27 roosi [email protected] рд▓рд┐рдЦрд╛ рд╣реИ: