Έτοιμο, σετ, φωτιά!
Γεια σου, Τομ εδώ γράφει! Εάν είστε άπληστος χρήστης του Firebase, ξέρετε πόσο απλός μπορεί να είναι ο χειρισμός του backend χωρίς backend. Χάρη στις λειτουργίες Firebase, γράφω απλώς τη λογική της επιχείρησής μου ως απλή λειτουργία, αναπτύσσω αυτήν την ίδια λειτουργία μέσω του CLI και μπορώ να την φτάσω από το σύννεφο παντού στον πλανήτη. Η ίδια η εγκατάσταση είναι τόσο απλή, ώστε η ανάπτυξη από μόνη της διαρκεί μόνο λίγα λεπτά. Υπάρχει όμως μια ειδική περίπτωση με τις λειτουργίες του Firebase που μπορεί να χρειάζονται περισσότερη δουλειά - χρησιμοποιώντας έναν προσαρμοσμένο τομέα και όχι αυτόν που παρέχεται από το Firebase.
Η πρόκληση
Εάν απλώς αναπτύξετε τις λειτουργίες Firebase, όπως περιγράφεται, θα φιλοξενηθείτε σε έναν υποτομέα από την Google, συγκεκριμένα στο
cloudfunctions.net
Για απλές περιπτώσεις χρήσης, αυτό είναι κυρίως αυτό που χρειάζεστε - απλώς αναπτύξτε το πράγμα και κάντε το διαθέσιμο για κατανάλωση. Ωστόσο, άλλες περιπτώσεις χρήσης απαιτούν την πρόσβαση του backend σας στον τομέα σας. Για αυτό το παράδειγμα, θα χρησιμοποιήσω τον δικό μου τομέα flaming.codes.
Η εγκατάσταση
Ακολουθούν οι προϋποθέσεις, απλώς για να βεβαιωθείτε:
- έχετε ρυθμίσει ένα έργο Firebase
- Στην ενότητα Φιλοξενία, έχετε ρυθμίσει τον προσαρμοσμένο τομέα σας. Αυτή είναι μια απλή διαδικασία, όπου απλά πρέπει να αποθηκεύσετε μια εγγραφή TXT στον πάροχο φιλοξενίας σας
Η διαμόρφωση
Για να κάνετε πραγματικά τον προσαρμοσμένο τομέα σας όχι μόνο λειτουργικό για την φιλοξενούμενη εφαρμογή ιστού σας, αλλά και για τις λειτουργίες σας, το firebase.json πρέπει να ενημερωθεί (εξήγηση μετά το δείγμα):
{
"functions": {
...
},
"hosting": {
...,
"rewrites": [
{
"source": "/api/**",
"function": "api"
},
{
"source": "!/api/**",
"destination": "/index.html"
}
]
},
...
}
Το μόνο τέχνασμα για να το λειτουργήσει είναι να ενημερώσετε το κλειδί φιλοξενίας, όχι τις λειτουργίες, στο firebase.json. Αυτό που ουσιαστικά κάνουμε είναι να πούμε στο Firebase ότι από την φιλοξενούμενη εφαρμογή ιστού, όλες οι κλήσεις προς / api / ... πρέπει να ανακατευθυνθούν στη λειτουργία που ονομάζεται api. Αυτό που με πήρε το μεγαλύτερο χρονικό διάστημα ήταν το δεύτερο στοιχείο, όπου πρέπει να δηλώσω ρητά ότι κάθε άλλη διαδρομή εκτός από το api πρέπει να αντιμετωπιστεί ως μια προεπιλεγμένη διαδρομή εφαρμογών ιστού.
Χρησιμοποιώντας την ακόλουθη ρύθμιση, η παλιά λειτουργία cloud
https://uscentral1-flaming-codes.cloudfunctions.net/api
επομένως γίνεται
https: //flaming.codes/api / ...
Σημειώστε ότι η παραγγελία είναι σημαντική εδώ, οι κανόνες επανεγγραφής επεξεργάζονται από το πρώτο στο τελευταίο στοιχείο, οπότε σε αυτήν την περίπτωση από πάνω προς τα κάτω, οπτικά. Η χρήση ενός μπαλαντέρ για την εκ νέου χαρτογράφηση όλων των λειτουργιών σας δεν συνιστάται για γενική χρήση, καθώς θα καταστρέψει την εφαρμογή ιστού σας.
Τύλιξε
Και ναι, δεν είναι πραγματικά μαγικό, αλλά μπορεί να βοηθήσει πολύ όταν χρησιμοποιείτε τις λειτουργίες Firebase σε ορισμένες περιπτώσεις χρήσης. Έχουμε δει πώς να ξαναγράψετε τις λειτουργίες cloud ως μέρος του ήδη καταχωρισμένου τομέα, εξαλείφοντας έτσι την απαίτηση για έναν νέο, προσαρμοσμένο υποτομέα - αν και αυτό είναι δυνατό επίσης, αλλά εκτός πεδίου για αυτό το σεμινάριο.
- Tom