melius
[Firebase] 클라우드 함수 사용하기 본문
1. Firebase 클라우드 함수(Cloud Functions) 사용하기
https://firebase.google.com/docs/functions/get-started
* 참고: Firebase 호스팅 시작하기
1) 프로젝트 초기화
$ firebase init functions
2) index.js 파일 수정
생성된 functions 폴더의 index.js 파일을 수정한다.
const functions = require('firebase-functions');
exports.functionName = functions.https.onRequest((req, res) => {
let text = req.query.text;
res.send(`firebase msg: ${text}`);
});
* Firebase Admin SDK를 사용하려면 firebase-admin 모듈을 설치한다.
https://firebase.google.com/docs/admin/setup
$ npm install firebase-admin
3) 로컬 테스트 및 배포
$ firebase serve --only functions
(로컬 서버 URL: http://localhost:5000/project_name/us-central1/functionName)
$ firebase deploy --only functions
(FB 서버 URL: https://us-central1-project_name.cloudfunctions.net/functionName)
2. Hosting으로 함수 접근하기
1) 프로젝트 폴더에 호스팅 추가하기
$ firebase init hosting
2) firebase.json 설정하기
https://firebase.google.com/docs/hosting/full-config
생성된 firebase.json 파일에 아래와 같이 "rewrites" 속성을 추가하여 Hosting에서 함수에 접근하기 위한 설정을 추가한다.
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "/fnn",
"function": "functionName"
}]
}
}
3) 로컬 테스트
$ firebase serve --only hosting
(로컬 서버 URL: http://localhost:5000/fnn)
3. Express 프레임워크 연동하기
1) Express 앱 구성
functions 폴더에서 express 모듈을 설치한다.
$ npm install express
index.js 파일에 Express 앱을 생성한다.
* 루트경로('/')를 사용하기 위해서 public 폴더의 index.html을 삭제한다.
const functions = require('firebase-functions');
const express = require('express');
const app = express();
app.get('/', (req, res) => {
let text = req.query.text;
res.send(`firebase app msg: ${text}`);
});
exports.app = functions.https.onRequest(app);
2) firebase.json 수정
"source" 속성값을 Express 앱의 url과 일치시키거나 "**" 로 작성한다.
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [{
"source": "**",
"function": "app"
}]
}
}
3) 로컬 테스트 및 배포
$ firebase serve --only hosting,functions
$ firebase deploy --only hosting,functions
'library & framework' 카테고리의 다른 글
[React] 기본구조 (0) | 2020.02.21 |
---|---|
[websocket] WebSocket Implementation for Node.js (0) | 2020.02.11 |
[ws] Node.js WebSocket library (0) | 2020.02.03 |
[Handlebars] 사용법 (0) | 2020.01.15 |
[Cordova] 디버깅(vh 단위 적용문제) (0) | 2020.01.11 |