Cung cấp nội dung động và lưu trữ các dịch vụ nhỏ với Chức năng đám mây

Ghép nối Chức năng đám mây với Lưu trữ Firebase để tạo và phân phát nội dung động của bạn hoặc xây dựng các API REST dưới dạng dịch vụ vi mô.

Đám mây Chức năng cho căn cứ hỏa lực cho phép bạn tự động chạy mã backend để đáp ứng với yêu cầu HTTPS. Mã của bạn được lưu trữ trong đám mây của Google và chạy trong môi trường được quản lý. Không cần phải quản lý và mở rộng các máy chủ của riêng bạn.

Đối với trường hợp sử dụng ví dụ và các mẫu cho Cloud Chức năng tích hợp với căn cứ hỏa lực Hosting, hãy truy cập của chúng tôi cái nhìn tổng quan serverless .

Kết nối Chức năng đám mây với Lưu trữ Firebase

Phần này cung cấp một ví dụ hướng dẫn về cách kết nối một chức năng với Lưu trữ Firebase.

Lưu ý rằng để cải thiện hiệu suất phục vụ nội dung động, bạn có thể tùy chỉnh của bạn thiết lập bộ nhớ cache .

Bước 1: Thiết lập chức năng đám mây

  1. Đảm bảo rằng bạn có phiên bản Firebase CLI mới nhất và bạn đã khởi chạy Lưu trữ Firebase.

    Để được hướng dẫn chi tiết về việc cài đặt CLI và khởi tạo Hosting, vui lòng xem hướng dẫn Bắt đầu Nhận cho Hosting .

  2. Đảm bảo rằng bạn đã thiết lập Chức năng đám mây:

    • Nếu bạn đã thiết lập Mây Chức năng, bạn có thể tiến hành Bước 2: Tạo và thử nghiệm một chức năng HTTPS .

    • Nếu bạn đã không được thiết lập Mây Chức năng:

      1. Khởi tạo Chức năng đám mây bằng cách chạy lệnh sau từ thư mục gốc của thư mục dự án của bạn:

        firebase init functions
      2. Khi được nhắc, hãy chọn JavaScript (ví dụ hướng dẫn này sử dụng JS).

      3. Kiểm tra xem bạn có một functions thư mục trong thư mục dự án địa phương của bạn (được tạo ra bởi lệnh căn cứ hỏa lực bạn chỉ cần chạy). Đây functions thư mục là nơi mã Cloud Chức năng sống.

Bước 2: Tạo và thử nghiệm một chức năng HTTPS cho trang web của bạn Hosting

  1. Mở /functions/index.js trong trình soạn thảo yêu thích của bạn.

  2. Thay thế nội dung của tệp bằng mã sau.

    Mã này tạo ra một chức năng HTTPS (tên bigben ) mà trả lời cho các yêu cầu HTTPS với một BONG cho mỗi giờ trong ngày, giống như một chiếc đồng hồ.

    const functions = require('firebase-functions');
    
    exports.bigben = functions.https.onRequest((req, res) => {
      const hours = (new Date().getHours() % 12) + 1  // London is UTC + 1hr;
      res.status(200).send(`<!doctype html>
        <head>
          <title>Time</title>
        </head>
        <body>
          ${'BONG '.repeat(hours)}
        </body>
      </html>`);
    });
    
  3. Kiểm tra chức năng của địa phương sử dụng các căn cứ hỏa lực địa phương Emulator Suite .

    1. Từ thư mục gốc của thư mục dự án cục bộ của bạn, hãy chạy lệnh sau:

      firebase emulators:start
    2. Truy cập các chức năng thông qua URL địa phương được trả về bởi CLI, ví dụ: http://localhost:5001/ PROJECT_ID /us-central1/bigben .

Hãy truy cập vào tài liệu Chức năng đám mây để tìm hiểu thêm về các yêu cầu HTTPS.

Bước tiếp theo bạn đi qua làm thế nào để truy cập vào chức năng HTTPS này từ một căn cứ hỏa lực Hosting URL để nó có thể tạo nội dung động cho trang web của căn cứ hỏa lực-lưu trữ của bạn.

Bước 3: Chuyển các yêu cầu HTTPS để chức năng của bạn

Với quy tắc viết lại , bạn có thể trực tiếp yêu cầu phù hợp với mô hình cụ thể cho một điểm đến duy nhất. Các bước sau đây cho bạn thấy làm thế nào để chỉ đạo tất cả các yêu cầu từ con đường ../bigben trên trang web của bạn Hosting để thực hiện bigben chức năng.

  1. Mở của bạn firebase.json tập tin .

  2. Thêm dòng sau rewrite cấu hình dưới hosting phần:

    "hosting": {
      // ...
    
      // Add the "rewrites" attribute within "hosting"
      "rewrites": [ {
        "source": "/bigben",
        "function": "bigben"
      } ]
    }
    
  3. Xác nhận rằng chuyển hướng của bạn hoạt động như mong đợi bằng cách thử nghiệm lại với trình giả lập Firebase.

    1. Từ thư mục gốc của thư mục dự án cục bộ của bạn, hãy chạy lệnh sau:

      firebase emulators:start
    2. Truy cập vào URL tại địa phương tổ chức cho trang web của bạn càng được trả về bởi CLI (thường là localhost:5000 ), nhưng thêm URL với bigben , như vậy: http://localhost:5000/bigben

  4. Lặp lại chức năng của bạn và chức năng của nó cho trang web của bạn. Sử dụng trình giả lập Firebase để kiểm tra các lần lặp lại này.

Truy cập vào trang cấu hình Hosting cho biết thêm chi tiết về quy tắc viết lại . Bạn cũng có thể tìm hiểu về thứ tự ưu tiên của các phản ứng cho các cấu hình Hosting khác nhau.

Lưu ý rằng để cải thiện hiệu suất phục vụ nội dung động, bạn có thể tùy chỉnh của bạn thiết lập bộ nhớ cache .

Bước 4: Triển khai chức năng của bạn

Khi chức năng của bạn đang làm việc như mong muốn trong giả lập, bạn có thể tiến hành triển khai, kiểm tra, và chạy nó với nguồn lực dự án thực sự. Đây là một thời điểm tốt để xem xét việc thiết tùy chọn thời gian chạy đến hành vi mở rộng quy mô kiểm soát cho các chức năng hoạt động trong sản xuất.

  1. Triển khai chức năng của bạn cũng như nội dung Lưu trữ và cấu hình cho trang web của bạn bằng cách chạy lệnh sau từ thư mục gốc của thư mục dự án cục bộ của bạn:

    firebase deploy --only functions,hosting
  2. Truy cập trang web trực tiếp của bạn và chức năng của bạn tại các URL sau:

    • Các miền phụ Firebase của bạn:
      PROJECT_ID .web.app/bigbenPROJECT_ID .firebaseapp.com/bigben

    • Bất kỳ kết nối miền tùy chỉnh :
      CUSTOM_DOMAIN /bigben

Sử dụng khung web

Bạn có thể sử dụng các khuôn khổ web như Express.js , trong Cloud Chức năng để phục vụ nội dung động của ứng dụng của bạn và viết các ứng dụng web phức tạp dễ dàng hơn.

Phần sau đây cung cấp một ví dụ tổng quan về cách sử dụng Express.js với Lưu trữ Firebase và Chức năng đám mây.

  1. Cài đặt Express.js trong dự án địa phương của bạn bằng cách chạy lệnh sau đây từ bạn functions thư mục:

    npm install express --save
  2. Mở của bạn /functions/index.js tập tin, sau đó nhập và khởi Express.js:

    const functions = require('firebase-functions');
    const express = require('express');
    const app = express();
    
  3. Thêm hai điểm cuối sau:

    1. Thêm endpoint đầu tiên để phục vụ cho chỉ số của trang web của chúng tôi tại / .

      app.get('/', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.send(`
          <!doctype html>
          <head>
            <title>Time</title>
            <link rel="stylesheet" href="/style.css">
            <script src="/script.js"></script>
          </head>
          <body>
            <p>In London, the clock strikes:
              <span id="bongs">${'BONG '.repeat(hours)}</span></p>
            <button onClick="refresh(this)">Refresh</button>
          </body>
        </html>`);
      });
      
    2. Và thiết bị đầu cuối khác để trả lại BONG tính là một API, ở định dạng JSON, dưới /api :

      app.get('/api', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.json({bongs: 'BONG '.repeat(hours)});
      });
      
  4. Xuất ứng dụng Express.js dưới dạng hàm HTTPS:

    exports.app = functions.https.onRequest(app);
    
  5. Trong bạn firebase.json tập tin, chỉ đạo tất cả các yêu cầu đến app chức năng. Viết lại này cho phép Express.js để phục vụ subpath khác nhau mà chúng ta cấu hình (trong ví dụ này, //api ).

    {
     "hosting": {
       // ...
    
       // Add the "rewrites" attribute within "hosting"
       "rewrites": [ {
         "source": "**",
         "function": "app"
       } ]
     }
    }
    

Thêm phần mềm trung gian

Tiếp tục ví dụ của chúng tôi, bây giờ mà bạn đang sử dụng Express.js, bạn có thể thêm Express.js middleware theo cách thông thường. Ví dụ, bạn có thể bật CORS yêu cầu về thiết bị đầu cuối của chúng tôi.

  1. Cài đặt cors middleware bằng cách chạy lệnh sau:

    npm install --save cors
  2. Mở của bạn /functions/index.js tập tin, sau đó thêm cors để ứng dụng Express.js của bạn, như vậy:

    const cors = require('cors')({origin: true});
    app.use(cors);
    

Hãy truy cập vào tài liệu Chức năng đám mây để tìm hiểu thêm về việc sử dụng căn cứ hỏa lực với các ứng dụng Express và module middleware.

Bước tiếp theo