Πώς να δημιουργήσετε με επιτυχία ένα API με το Firebase;

Το Firebase είναι μια πλατφόρμα ανάπτυξης εφαρμογών που ξεκίνησε το 2012 και αποκτήθηκε από την Google δύο χρόνια αργότερα. Στην αρχή του, το Firebase θεωρούνταν απλώς ως βάση δεδομένων για εφαρμογές σε πραγματικό χρόνο, αλλά η Google είδε τις δυνατότητές του και αποφάσισε να προσθέσει επιπλέον υπηρεσίες σε αυτό.

Επί του παρόντος, το Firebase είναι ένα σύστημα BaaS (backend ως υπηρεσία) με 18 υπηρεσίες για τη διευκόλυνση της δημιουργίας εφαρμογών web και για κινητές συσκευές. Μεταξύ των εταιρειών που χρησιμοποιούν τις υπηρεσίες BaaS της Firebase είναι οι Accenture, Alibaba Travels, Stack, Twitch και Instacart, μαζί με περισσότερες από 2.300 άλλες.

Οφέλη από τη χρήση του Firebase

Η πρώτη από τις υπηρεσίες που προσέφερε το Firebase ήταν η βάση δεδομένων σε πραγματικό χρόνο και παραμένει ένα από τα μεγαλύτερα πλεονεκτήματά του. Οι βάσεις δεδομένων Firebase σε πραγματικό χρόνο φιλοξενούνται στο cloud, αποθηκεύουν δεδομένα σε μορφή JSON και συγχρονίζονται σε πραγματικό χρόνο με κάθε πελάτη που είναι συνδεδεμένος σε αυτές. Είτε χρησιμοποιούν το iOS SDK, το Android SDK ή το JavaScript SDK, όλες οι εφαρμογές που είναι συνδεδεμένες σε μια βάση δεδομένων Firebase Realtime μοιράζονται μία παρουσία της βάσης δεδομένων, πάντα ενημερωμένη με τα πιο πρόσφατα δεδομένα.

Το Cloud Firestore είναι μια άλλη ενδιαφέρουσα υπηρεσία Firebase. Είναι μια βάση δεδομένων εγγράφων NoSQL που έχει σχεδιαστεί για να διευκολύνει την αποθήκευση δεδομένων, το συγχρονισμό και την αναζήτηση ερωτημάτων για εφαρμογές για κινητά και web σε παγκόσμια κλίμακα. Η δημιουργία ιεραρχιών για την αποθήκευση σχετικών δεδομένων και εκφραστικών ερωτημάτων για την ανάκτηση δεδομένων επιτρέπουν την πλήρη αξιοποίηση των δυνατοτήτων του Cloud Firestore. Με τη σειρά τους, τα ερωτήματα κλιμακώνονται με βάση το μέγεθος των αποτελεσμάτων και όχι το μέγεθος του συνόλου δεδομένων. Αυτό επιτρέπει στις εφαρμογές να κλιμακώνονται από την αρχή χωρίς να περιμένουν τη στιγμή που οι ανάγκες υπερβαίνουν τη χωρητικότητα.

Εκτός από τις προαναφερθείσες υπηρεσίες βάσης δεδομένων, το Firebase προσφέρει επίσης υπηρεσίες φιλοξενίας, αποθήκευση αρχείων, λειτουργίες (AWS Lambda-style), μεταξύ πολλών άλλων.

Δημιουργία API

Τα API είναι ένας τρόπος παροχής υπηρεσιών για χρήση από δικές σας εφαρμογές ή εφαρμογές τρίτων. Το Firebase σάς επιτρέπει να παρέχετε προσαρμοσμένες υπηρεσίες που, με τη σειρά τους, κάνουν χρήση των υπηρεσιών του Firebase χωρίς την ταλαιπωρία να δημιουργήσετε ένα backend για αυτές τις υπηρεσίες. Θα μπορούσατε, για παράδειγμα, να προσφέρετε πρόσβαση σε μια βάση δεδομένων Firebase σε πραγματικό χρόνο για εφαρμογές τρίτων για την αναζήτηση πληροφοριών που συλλέγονται από βιομηχανικούς αισθητήρες.

Το πρώτο βήμα για τη δημιουργία ενός API στο Firebase είναι να αποκτήσετε πρόσβαση στο Κονσόλα Firebase και προσθέστε ένα έργο κάνοντας κλικ στην “Προσθήκη έργου” και δίνοντας ένα όνομα στο νέο έργο. Η Google θα σας δώσει την επιλογή να ενεργοποιήσετε το Google Analytics για το νέο σας έργο. Συνιστάται να αποδεχτείτε αυτήν τη σύσταση, καθώς θα λάβετε οφέλη όπως η δοκιμή A/B και μια μεγάλη ποικιλία στατιστικών αναφορών από το API σας.

  Πώς να διαγράψετε μηνύματα στο iPhone και από τις δύο πλευρές

Αφού δημιουργήσετε το έργο σας, θα μπορείτε να επιλέξετε τις υπηρεσίες Firebase που θα χρησιμοποιεί το API σας. Για να επεξηγήσουμε αυτήν την εργασία, θα δούμε πώς να χρησιμοποιήσετε την υπηρεσία βάσης δεδομένων Firebase Realtime.

Ρύθμιση μιας βάσης δεδομένων σε πραγματικό χρόνο στο Firebase

Στη γραμμή πλοήγησης στα αριστερά, μέσα στην ενότητα Ανάπτυξη, κάντε κλικ στη Βάση δεδομένων σε πραγματικό χρόνο. Ένα κουμπί «Δημιουργία βάσης δεδομένων» θα εμφανιστεί στα δεξιά. Κάντε κλικ σε αυτό για να δημιουργήσετε την πρώτη σας βάση δεδομένων στο Firebase.

Στη συνέχεια, θα πρέπει να επιλέξετε ανάμεσα σε πολλές επιλογές γεωγραφικής τοποθεσίας για τη νέα σας βάση δεδομένων. Επιλέξτε αυτό που είναι πιο κοντά στους χρήστες σας. Αυτή είναι μια σημαντική πτυχή για την ελαχιστοποίηση του λανθάνοντος χρόνου του API σας, ιδιαίτερα σε εφαρμογές σε πραγματικό χρόνο.

Το επόμενο βήμα είναι να διαμορφώσετε τους βασικούς κανόνες ασφαλείας για τη βάση δεδομένων σας. Μπορείτε να επιλέξετε την κλειδωμένη λειτουργία και στη συνέχεια να εκχωρήσετε δικαιώματα πρόσβασης όπως απαιτείται ή να επιλέξετε τη λειτουργία δοκιμής, η οποία επιτρέπει όλες τις αναγνώσεις και τις εγγραφές.

Μπορείτε να ξεκινήσετε με την επιλογή δοκιμαστικής λειτουργίας για να μην περιπλέκετε τις ρυθμίσεις ασφαλείας στην αρχή. Μπορείτε πάντα να δημιουργήσετε κανόνες αργότερα για να ορίσετε τη διαμόρφωση ασφαλείας με μεγαλύτερη ευαισθησία.

Μόλις ολοκληρώσετε τη διαμόρφωση της βάσης δεδομένων σας, το αντίστοιχο API ενεργοποιείται επίσης στην ενότητα API και Υπηρεσίες της προσωπικής σας κονσόλας στο Google Cloud Platform.

Προγραμματισμός του Firebase API

Σε αυτό το σημείο, έχετε ήδη διαμορφώσει τα βασικά στοιχεία του έργου σας στην κονσόλα Firebase. Το επόμενο βήμα είναι να γράψετε τον κωδικό API σας. Για να το κάνετε αυτό, θα χρειαστεί να αρχικοποιήσετε τη φιλοξενία και τις λειτουργίες του Firebase στον τοπικό σας υπολογιστή. Μπορείτε να εγκαταστήσετε το firebase-tools χρησιμοποιώντας το npm:

npm install -g firebase-tools

Στη συνέχεια, μπορείτε να συνδεθείτε στο firebase και να αρχικοποιήσετε το έργο σας με τις ακόλουθες εντολές:

firebase login firebase init

Θα εμφανιστεί μια οθόνη καλωσορίσματος στην οποία το Firebase σας ενημερώνει για τον φάκελο στον οποίο θα αρχικοποιηθεί το έργο σας και θα εμφανιστεί ένα μενού επιλογών.

Σε αυτό το μενού, επιλέξτε Functions and Hosting (η επιλογή Hosting θα σας επιτρέψει να έχετε μια προσαρμοσμένη διεύθυνση URL για το API που θα αναπτύξετε). Στη συνέχεια, επιλέξτε από τη λίστα την εφαρμογή Firebase που δημιουργήσατε νωρίτερα, μετά από την οποία πρέπει να επιλέξετε τη γλώσσα που θα χρησιμοποιήσετε. Για να αναπτύξετε ένα web API, μπορείτε να επιλέξετε JavaScript.

  Τρόπος επεξεργασίας εικόνων στις Παρουσιάσεις Google

Εάν θα χρησιμοποιήσετε εξαρτήσεις πακέτων, εγκαταστήστε τις με npm μέσα στο φάκελο συναρτήσεων. Στη συνέχεια, μπορείτε να αρχίσετε να γράφετε τον κώδικα για τις λειτουργίες σας. Θυμηθείτε να συμπεριλάβετε τα πακέτα firebase-functions και firebase-admin, μαζί με άλλα πακέτα που χρειάζεστε:

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

Για να χρησιμοποιήσετε τη βάση δεδομένων σε πραγματικό χρόνο, πρέπει να καθορίσετε τη διεύθυνση URL κατά την προετοιμασία του JavaScript SDK. Η διεύθυνση URL βρίσκεται στην ενότητα Βάση δεδομένων σε πραγματικό χρόνο της κονσόλας Firebase. Μπορείτε να το αναγνωρίσετε από τη μορφή του:

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

Μπορείτε να χρησιμοποιήσετε το ακόλουθο απόσπασμα για να αρχικοποιήσετε το SDK σας, αντικαθιστώντας τα δεδομένα που αντιστοιχούν στο αντικείμενο διαμόρφωσης του έργου σας:

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

Αφού γράψετε τον κώδικα της συνάρτησης API, είναι ώρα για ανάπτυξη. Αλλά προτού το κάνετε, θα πρέπει να κάνετε κάποιες αλλαγές στο firebase.json, προσθέτοντας τις ακόλουθες γραμμές, τροποποιημένες σύμφωνα με τη διαμόρφωση του έργου σας:

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

Το επόμενο βήμα είναι η ανάπτυξη. Την πρώτη φορά που πρέπει να κάνετε μια πλήρη ανάπτυξη, εκτελώντας την εντολή:

firebase deploy

Σε επόμενες αναπτύξεις, θα μπορείτε να αναπτύξετε μόνο τις συναρτήσεις, χρησιμοποιώντας την παράμετρο –only functions.

Μετά την εκτέλεση της εντολής ανάπτυξης, το Firebase CLI εμφανίζει τη διεύθυνση URL των τελικών σημείων HTTP των συναρτήσεών σας στο τερματικό, την οποία μπορείτε να χρησιμοποιήσετε για να καλέσετε τα API σας από μια εφαρμογή Ιστού. Η διεύθυνση URL περιέχει το αναγνωριστικό του έργου σας και μια περιοχή για τη συνάρτηση HTTP. Για παράδειγμα, η ακόλουθη διεύθυνση URL μπορεί να χρησιμοποιηθεί για να καλέσετε μια συνάρτηση ερωτήματος στοιχείου περνώντας την itemid=1 ως παράμετρο:

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

Για να εκτελέσετε τη συνάρτηση, ανοίξτε τη διεύθυνση URL με τις αντίστοιχες παραμέτρους σε ένα πρόγραμμα περιήγησης.

Λάβετε υπόψη ότι η ανάπτυξη στο περιβάλλον παραγωγής απαιτεί συνδρομή στο πρόγραμμα Firebase Blaze, το οποίο είναι pay-as-you-go, όπως μπορείτε να διαβάσετε στη σελίδα τιμολόγησης Firebase. Είναι μια υπηρεσία μετά τη χρέωση, που σημαίνει ότι χρεώνεστε για τη χρήση σας στο τέλος κάθε μήνα.

Εάν δεν έχετε συνδρομή Blaze, η εντολή ανάπτυξης δεν θα εμφανίσει τη διεύθυνση URL του API σας. Αντίθετα, θα δείτε ένα μήνυμα που θα σας ενημερώνει ότι πρέπει να εγγραφείτε στο πρόγραμμα Blaze εάν θέλετε να εγγραφείτε στο περιβάλλον χρόνου εκτέλεσης. Σε αυτήν την περίπτωση, μπορείτε ακόμα να χρησιμοποιήσετε το Firebase Local Emulation Suite για να δημιουργήσετε και να δοκιμάσετε εφαρμογές στον τοπικό σας υπολογιστή αντί να τις αναπτύξετε στο περιβάλλον παραγωγής Firebase. Οι τοπικές δοκιμές είναι χρήσιμες για την αποφυγή περιττών δαπανών κατά την ανάπτυξη της εφαρμογής, καθώς κάθε δοκιμαστική εκτέλεση μπορεί να δημιουργήσει χρεώσεις στο λογαριασμό σας.

  Τρόπος ταξινόμησης κατά πολλαπλές στήλες στα Φύλλα Google

Τοπικές δοκιμές και πρωτότυπα

Το εργαλείο Local Emulator Suite προσφέρει μια ενσωματωμένη διεπαφή χρήστη που καθιστά τη δημιουργία πρωτοτύπων εύκολη και χρήσιμη για τη δοκιμή των εφαρμογών σας στον τοπικό σας υπολογιστή.

Με τη διεπαφή χρήστη του Emulator Suite, μπορείτε να δοκιμάσετε τα σχέδια της βάσης δεδομένων σας, τις ροές εργασιών του Cloud Functions, να αναλύσετε την απόδοση των υπηρεσιών υποστήριξης και να αξιολογήσετε τις αλλαγές στους κανόνες ασφαλείας, μεταξύ άλλων εργασιών. Είναι βασικά ένα ασφαλές sandbox για να δοκιμάσετε τη λειτουργικότητα του API πριν το στείλετε σε περιβάλλον παραγωγής.

Για να προσομοιώσετε τις συναρτήσεις σας ή να δοκιμάσετε την εφαρμογή σας τοπικά, εκτελέστε το firebase emulators:start. Πρέπει να έχετε εγκαταστήσει Java για να μπορείτε να χρησιμοποιήσετε το Firestore Emulator. Εάν δεν το έχετε, μπορείτε να το εγκαταστήσετε από εδώ.

Όταν καλείτε το Firestore Emulator, η εντολή θα επιστρέψει μια διεύθυνση URL που θα σας επιτρέψει να ανοίξετε τη διεπαφή χρήστη του Emulator Suite στο πρόγραμμα περιήγησής σας. Από προεπιλογή, αυτή η διεύθυνση URL θα είναι localhost:4000, αλλά μπορεί να διαφέρει σε κάθε μηχάνημα.

Θα λάβετε επίσης μια πλήρη διεύθυνση URL για τη συνάρτηση HTTP. Αυτή η διεύθυνση URL θα μοιάζει με:

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

μόνο θα έχει το όνομα του έργου σας, το όνομα της λειτουργίας σας και μπορεί επίσης να έχει διαφορετικό αριθμό θύρας στον τοπικό σας υπολογιστή.

Για να δοκιμάσετε τη συνάρτηση, αντιγράψτε τη διεύθυνση URL που επιστράφηκε από τον εξομοιωτή, προσθέτοντας τυχόν απαραίτητες παραμέτρους (π.χ. ?itemid=1) και καταχωρίστε την σε μια νέα καρτέλα του προγράμματος περιήγησής σας. Τα αποτελέσματα της εκτέλεσης του API θα εμφανιστούν στη διεπαφή χρήστη Emulator Suite.

Στην καρτέλα Logs, θα δείτε νέα αρχεία καταγραφής που υποδεικνύουν ότι η συνάρτηση itemQuery() εκτελέστηκε. Εάν η συνάρτησή σας δημιουργεί νέα δεδομένα στη βάση δεδομένων του Firestore, θα τα δείτε στην καρτέλα Firestore.

Κερδίστε περισσότερη έκθεση για το API σας

Εάν θέλετε τα API που αναπτύσσετε να γίνουν δημοφιλή, το Firebase μπορεί να σας βοηθήσει και σε αυτό. Όχι μόνο επειδή σας επιτρέπει να δημιουργήσετε την εφαρμογή σας πιο γρήγορα, καταβάλλοντας μεγάλο μέρος της δουλειάς για τη λειτουργία και λειτουργία των υπηρεσιών υποστήριξης, αλλά και βοηθώντας σας με την τοποθέτηση του προϊόντος σας. Πώς γίνεται αυτό? Απλώς επειδή οι εφαρμογές που σχετίζονται με το Firebase κατατάσσονται καλύτερα στην κατάταξη αναζήτησης από άλλες εφαρμογές.

Επίσης, λάβετε υπόψη το API ευρετηρίασης εφαρμογών του Firebase. Αυτό το εργαλείο βελτιώνει τις ταξινομήσεις αναζήτησης των συνδέσμων εφαρμογών και βοηθά τους χρήστες να βρουν το επιθυμητό περιεχόμενο. Επίσης, τοποθετεί το κουμπί Εγκατάσταση μετά το κουμπί αρχικής σελίδας της εφαρμογής σας, έτσι ώστε οι ενδιαφερόμενοι χρήστες να απέχουν μόλις ένα κλικ από το να γίνουν χρήστες της εφαρμογής σας.

Εν κατακλείδι, το Firebase όχι μόνο σας προσφέρει υπηρεσίες υποστήριξης που επιταχύνουν δραματικά την ανάπτυξη του API σας, αλλά μόλις τεθεί σε λειτουργία και εκτεθεί στον κόσμο, σας βοηθά επίσης να το προωθήσετε – και να κερδίσετε χρήματα από αυτό.