Tin tức và phân tích của tất cả các thiết bị di động

Làm cách nào để xây dựng thành công API với Firebase?

Firebase là một nền tảng phát triển ứng dụng ra mắt vào năm 2012 và được Google mua lại hai năm sau đó. Lúc đầu, Firebase chỉ được hình thành dưới dạng cơ sở dữ liệu cho các ứng dụng thời gian thực, nhưng Google đã nhìn thấy tiềm năng của nó và quyết định bổ sung các dịch vụ bổ sung cho nó.

Hiện tại, Firebase là một hệ thống BaaS (phụ trợ dưới dạng dịch vụ) với 18 dịch vụ hỗ trợ tạo các ứng dụng web và di động. Các công ty sử dụng dịch vụ BaaS Firebase bao gồm Accenture, Alibaba Travels, Stack, Twitch và Instacart, cộng với hơn 2.300 người khác.

Lợi ích của việc sử dụng Firebase

Dịch vụ đầu tiên do Firebase cung cấp là cơ sở dữ liệu thời gian thực, đây vẫn là một trong những điểm thu hút lớn nhất. Cơ sở dữ liệu thời gian thực của Firebase được lưu trữ trên đám mây, lưu trữ dữ liệu ở định dạng JSON và đồng bộ hóa theo thời gian thực với từng máy khách được kết nối. Cho dù bạn đang sử dụng SDK iOS, SDK Android hay SDK JavaScript, thì tất cả các ứng dụng được kết nối với cơ sở dữ liệu Thời gian thực của Firebase đều chia sẻ một phiên bản cơ sở dữ liệu duy nhất, luôn cập nhật dữ liệu mới nhất.

Cloud Firestore là một dịch vụ Firebase thú vị khác. Nó là một cơ sở dữ liệu tài liệu NoSQL được thiết kế để hỗ trợ lưu trữ, đồng bộ hóa và truy vấn dữ liệu cho các ứng dụng web và di động trên phạm vi toàn cầu. Hệ thống phân cấp để lưu trữ dữ liệu liên quan và truy vấn rõ ràng để truy xuất dữ liệu cho phép bạn khai thác triệt để tiềm năng của Cloud Firestore. Ngược lại, quy mô truy vấn dựa trên kích thước của kết quả, không phải kích thước của tập dữ liệu. Điều này cho phép bạn mở rộng quy mô ứng dụng của mình từ đầu đến cuối mà không cần đợi cho đến khi nhu cầu vượt quá khả năng.

Ngoài các dịch vụ cơ sở dữ liệu được đề cập ở trên, Firebase còn cung cấp dịch vụ lưu trữ, lưu trữ tệp, tính năng (theo kiểu AWS Lambda), ví dụ:

Tạo API

API là một cách để cung cấp các dịch vụ mà ứng dụng của bạn hoặc ứng dụng của bên thứ ba có thể sử dụng. Firebase cho phép bạn cung cấp các dịch vụ tùy chỉnh, đến lượt chúng sử dụng các dịch vụ của chính Firebase mà không phải thiết lập chương trình phụ trợ cho các dịch vụ đó. Ví dụ: bạn có thể cung cấp quyền truy cập thời gian thực vào cơ sở dữ liệu Firebase cho các ứng dụng của bên thứ ba để tìm kiếm thông tin do các cảm biến công nghiệp thu thập.

Bước đầu tiên để tạo API trong Firebase là truy cập Bảng điều khiển Firebase và thêm dự án bằng cách nhấp vào “Thêm dự án” và đặt tên cho dự án mới. Google sẽ cho phép bạn kích hoạt Google Analytics cho dự án mới của mình. Bạn nên chấp nhận đề xuất này vì bạn sẽ nhận được các lợi ích như thử nghiệm A/B và nhiều lựa chọn báo cáo thống kê từ API của mình.

Khi bạn đã tạo dự án của mình, bạn sẽ có thể chọn dịch vụ Firebase mà API của bạn sẽ sử dụng. Để minh họa tác vụ này, chúng ta sẽ xem cách sử dụng dịch vụ cơ sở dữ liệu Thời gian thực Firebase.

Thiết lập cơ sở dữ liệu thời gian thực trong Firebase

Trong thanh điều hướng bên trái, bên dưới Phát triển, hãy nhấp vào Cơ sở dữ liệu thời gian thực. Ở bên phải, bạn sẽ thấy nút “Tạo cơ sở dữ liệu”. Nhấp vào nó để tạo cơ sở dữ liệu đầu tiên của bạn trong Firebase.

Sau đó, bạn sẽ cần chọn một trong số các tùy chọn vị trí địa lý cho cơ sở dữ liệu mới của mình. Chọn cái gần nhất với người dùng của bạn. Đây là một khía cạnh quan trọng để giảm thiểu độ trễ của API, đặc biệt là trong các ứng dụng thời gian thực.

Bước tiếp theo là cấu hình các quy tắc bảo mật cơ bản cho cơ sở dữ liệu của bạn. Bạn có thể chọn chế độ khóa và sau đó chỉ định quyền truy cập nếu cần hoặc chọn chế độ kiểm tra cho phép tất cả các lần đọc và ghi.

Bạn có thể bắt đầu với tùy chọn chế độ thử nghiệm để không làm phức tạp cài đặt bảo mật lúc đầu. Bạn luôn có thể tạo quy tắc sau để đặt cấu hình bảo mật của mình chi tiết hơn.

Ngay sau khi bạn định cấu hình xong cơ sở dữ liệu, API tương ứng cũng sẽ được bật trong phần API và Dịch vụ của bảng điều khiển cá nhân của bạn trong Google Cloud Platform.

Phát triển API Firebase

Tại thời điểm này, bạn đã thiết lập các yếu tố cơ bản cho dự án của mình trong bảng điều khiển Firebase. Bước tiếp theo là viết mã API. Để thực hiện việc này, bạn cần khởi chạy các tính năng và lưu trữ Firebase trên máy cục bộ của mình. Bạn có thể cài đặt các công cụ firebase với npm:

npm install -g firebase-tools

Sau đó, bạn có thể đăng nhập vào Firebase và khởi tạo dự án bằng các lệnh sau:

firebase login firebase init

Một màn hình giật gân sẽ hiển thị nơi Firebase sẽ thông báo cho bạn về thư mục mà dự án của bạn sẽ được khởi tạo và một menu tùy chọn sẽ xuất hiện.

Trong menu này, chọn Tính năng và Lưu trữ (tùy chọn Lưu trữ sẽ cho phép bạn có một URL tùy chỉnh cho các API bạn phát triển). Tiếp theo, chọn ứng dụng Firebase mà bạn đã tạo trước đó từ danh sách, sau đó bạn cần chọn ngôn ngữ bạn muốn sử dụng. Để phát triển API web, bạn có thể chọn JavaScript.

Nếu bạn sẽ sử dụng các phụ thuộc gói, hãy cài đặt chúng với npm trong thư mục chức năng. Sau đó, bạn có thể bắt đầu viết mã chức năng của mình. Đảm bảo bao gồm các gói firebase-functions và firebase-admin cùng với bất kỳ gói cần thiết nào khác:

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

Để sử dụng cơ sở dữ liệu thời gian thực, bạn phải chỉ định URL của nó khi khởi tạo JavaScript SDK. URL nằm trong phần Cơ sở dữ liệu thời gian thực của bảng điều khiển Firebase. Bạn có thể nhận ra nó bằng định dạng của nó:

https://<database-name>.<region>.firebasedatabase.app

Bạn có thể sử dụng đoạn mã bên dưới để khởi tạo SDK bằng cách thay thế dữ liệu tương ứng với đối tượng cấu hình dự án:

var config = {
  apiKey: "apiKey",
  authDomain: "projectId.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com",
  storageBucket: "bucket.appspot.com"
};
firebase.initializeApp(config);
var database = firebase.database();

Bây giờ bạn đã viết mã API của mình, đã đến lúc triển khai. Nhưng trước khi làm điều đó, bạn sẽ cần thực hiện một số thay đổi đối với firebase.json bằng cách thêm các dòng sau, được sửa đổi theo cấu hình dự án của bạn:

"rewrites": [
     {
       "source": "/api/v1/**",
       "function": "webApi"
     }
]

Bước tiếp theo là thực hiện. Lần đầu tiên bạn phải triển khai đầy đủ bằng cách thực hiện lệnh:

firebase deploy

Trong các lần triển khai tiếp theo, bạn sẽ chỉ có thể triển khai các hàm bằng cách sử dụng tham số -only functions.

Sau khi thực hiện lệnh triển khai, Firebase CLI hiển thị URL điểm cuối HTTP của các chức năng của bạn trong thiết bị đầu cuối, bạn có thể sử dụng URL này để gọi API từ ứng dụng web của mình. URL chứa ID dự án và vùng của hàm HTTP. Ví dụ: bạn có thể sử dụng URL sau để gọi hàm truy vấn mục bằng cách chuyển nó dưới dạng tham số itemid=1:

https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1

Để thực thi chức năng, hãy mở URL có tham số phù hợp trong trình duyệt của bạn.

Lưu ý rằng việc triển khai sang sản xuất yêu cầu đăng ký gói Firebase Blaze, trả theo mức sử dụng, như bạn có thể đọc trên trang định giá Firebase. Đây là dịch vụ sau khi thanh toán, có nghĩa là bạn được lập hóa đơn cho việc sử dụng vào cuối mỗi tháng.

Nếu bạn không có đăng ký Blaze, lệnh triển khai sẽ không hiển thị URL API. Thay vào đó, bạn sẽ thấy một thông báo nói rằng bạn cần đăng ký gói Blaze nếu muốn triển khai vào thời gian chạy. Trong trường hợp này, bạn vẫn có thể sử dụng Bộ mô phỏng cục bộ Firebase để phát triển và thử nghiệm các ứng dụng trên máy tính cục bộ của mình thay vì triển khai chúng vào môi trường sản xuất Firebase. Thử nghiệm cục bộ rất hữu ích để tránh các chi phí không cần thiết khi phát triển ứng dụng của bạn, vì mỗi lần chạy thử nghiệm có thể tạo ra các khoản phí trên tài khoản của bạn.

Thử nghiệm cục bộ và tạo mẫu

Bộ giả lập cục bộ cung cấp giao diện người dùng tích hợp giúp dễ dàng tạo nguyên mẫu và thử nghiệm các ứng dụng trên máy cục bộ của bạn.

Với giao diện người dùng Emulator Suite, bạn có thể thử nghiệm các thiết kế cơ sở dữ liệu, quy trình làm việc của Cloud Function, phân tích hiệu suất của các dịch vụ phụ trợ và đánh giá các thay đổi đối với quy tắc bảo mật, trong số những thứ khác. Về cơ bản, đây là một hộp cát an toàn để kiểm tra chức năng API trước khi đưa nó vào sản xuất.

Để mô phỏng các tính năng hoặc kiểm tra cục bộ ứng dụng của bạn, hãy chạy trình giả lập Firebase:start. Bạn phải cài đặt Java để sử dụng trình giả lập Firestore. Nếu bạn không có nó, bạn có thể cài đặt nó từ đây.

Khi bạn gọi trình giả lập Firestore, lệnh sẽ trả về một URL cho phép bạn mở giao diện người dùng gói giả lập trong trình duyệt của mình. Theo mặc định, URL này là localhost:4000, nhưng nó có thể khác nhau trên mỗi máy.

Bạn cũng sẽ nhận được URL đầy đủ của chức năng HTTP. URL này sẽ trông giống như:

http://localhost:5001/apiproject-8753c/us-central1/itemQuery

nó sẽ chỉ có tên dự án, tên chức năng của bạn và nó cũng có thể có một số cổng khác trên máy cục bộ của bạn.

Để kiểm tra chức năng, hãy sao chép URL do trình giả lập trả về, thêm bất kỳ tham số cần thiết nào (ví dụ: ?itemid=1) và nhập nó vào tab trình duyệt mới. Kết quả thực thi API sẽ xuất hiện trong giao diện người dùng gói giả lập.

Trong tab Nhật ký, bạn sẽ thấy các nhật ký mới cho biết rằng hàm itemQuery() đã được thực thi. Nếu chức năng của bạn tạo dữ liệu mới trong cơ sở dữ liệu Firestore của bạn, thì bạn sẽ thấy dữ liệu đó trong tab Firestore.

Tăng khả năng hiển thị API của bạn

Nếu bạn muốn các API mà bạn xây dựng trở nên phổ biến, thì Firebase có thể trợ giúp. Không chỉ bởi vì nó cho phép bạn xây dựng ứng dụng của mình nhanh hơn, loại bỏ rất nhiều công việc để thiết lập và chạy các dịch vụ phụ trợ của bạn, mà còn giúp bạn định vị sản phẩm của mình. Làm thế nào nó có thể? Đơn giản là vì các ứng dụng liên quan đến Firebase xếp hạng tốt hơn trong bảng xếp hạng tìm kiếm so với các ứng dụng khác.

Ngoài ra, hãy xem xét API lập chỉ mục ứng dụng Firebase. Công cụ này cải thiện thứ hạng tìm kiếm liên kết ứng dụng và giúp người dùng tìm thấy nội dung mong muốn. Nó cũng đặt nút Cài đặt phía sau nút trang chủ của ứng dụng để những người dùng quan tâm chỉ cần một cú nhấp chuột để trở thành người dùng ứng dụng của bạn.

Nói chung, Firebase không chỉ cung cấp các dịch vụ back-end giúp tăng tốc đáng kể quá trình phát triển API của bạn, mà sau khi dịch vụ này được thiết lập, chạy và tiếp xúc với thế giới, nó còn giúp bạn quảng bá dịch vụ đó – và kiếm tiền từ dịch vụ đó.