Εισαγωγή στο YAML για αρχάριους
Εάν είστε προγραμματιστής που γράφει API, πιθανότατα έχετε συναντήσει το YAML, παρόλο που το κύριο εργαλείο σειριοποίησης μπορεί να είναι το JSON.
Η YAML έχει τη δική της φιλική σύνταξη και είναι μια εύχρηστη γλώσσα για να προσθέσετε στο οπλοστάσιό σας ανάπτυξης.
Ας μάθουμε τα βασικά του YAML.
Πίνακας περιεχομένων
Σειριοποίηση δεδομένων
Κάθε φορά που θέλετε να στείλετε κάποια δομή δεδομένων ή ένα αντικείμενο σε δίκτυα υπολογιστών, ας πούμε στο Διαδίκτυο, πρέπει να το μετατρέψετε σε ειδική μορφή για να το διαβάσετε και να το αποθηκεύσετε. Η διαδικασία είναι κοινώς γνωστή ως σειριοποίηση και έχει τεράστια σημασία στο διαδίκτυο. Ένα συνηθισμένο παράδειγμα χρήσης της σειριοποίησης είναι κατά την ανάγνωση δεδομένων από βάσεις δεδομένων και τη μεταφορά τους στον Ιστό.
Ορισμένοι σχηματισμοί σειριοποίησης περιλαμβάνουν JSON, YAML, XML.
Σε αυτό το άρθρο, μιλάμε για το YAML και στο τέλος του άρθρου, θα μπορέσετε να εξερευνήσετε το YAML και να έχετε μια σαφή εισαγωγή στο YAML.
Τι είναι το YAML και πώς με ωφελεί;
Το YAML είναι μια μορφή σειριοποίησης δεδομένων που σημαίνει YAML δεν είναι γλώσσα σήμανσης.
Το κύριο πλεονέκτημα της χρήσης YAML είναι η αναγνωσιμότητα και η δυνατότητα εγγραφής. Εάν έχετε ένα αρχείο διαμόρφωσης που πρέπει να είναι ευκολότερο να το διαβάσει ο άνθρωπος, είναι καλύτερο να χρησιμοποιήσετε το YAML. Το YAML δεν είναι μια πλήρης αντικατάσταση του JSON καθώς το JSON και το XML έχουν επίσης τη θέση τους. Ωστόσο, είναι χρήσιμο να μάθεις YAML.
Ένα άλλο πλεονέκτημα του YAML είναι η υποστήριξή του σε διάφορους τύπους δεδομένων όπως περιπτώσεις, πίνακες, λεξικά, λίστες και βαθμίδες. Έχει καλή υποστήριξη για τις πιο δημοφιλείς γλώσσες όπως JavaScript, Python, Ruby, Java κ.λπ.
Το YAML υποστηρίζει μόνο διαστήματα και έχει διάκριση πεζών-κεφαλαίων καθώς και διάκριση χώρου. Οι καρτέλες δεν γίνονται αποδεκτές παγκοσμίως. Ένα αρχείο YAML έχει επέκταση .yaml.
Βασική σύνταξη YAML
Κάθε YAML ξεκινά με — που υποδηλώνει την έναρξη ενός αρχείου YAML.
Κατά τη δημιουργία ενός API, μας ενδιαφέρει μια δυνατότητα που παρέχεται από την YAML γνωστή ως χαρτογράφηση.
Τα ακόλουθα παραδείγματα δείχνουν το παράδειγμα της χαρτογράφησης στο YAML.
--- name: James boy: yes GPA: 3.41
Η σύνταξη αντιστοίχισης είναι κλειδί: τιμή. (Σημειώστε τον χώρο, είναι πολύ σημαντικός στο YAML, σε αντίθεση με το JSON ή το XML.
Το YAML υποστηρίζει επίσης τύπους δεδομένων όπως χαρακτήρες, συμβολοσειρές, ακέραιους αριθμούς, κυμαινόμενες τιμές και συλλογές όπως πίνακες, λίστες που κατασκευάζονται από βασικούς τύπους δεδομένων.
Τύποι δεδομένων στο YAML
Ας δούμε το παράδειγμα ενός YAML παρακάτω:
--- MALE: FALSE GPA: 3.61 ISSUES: NULL NAME: “BIGYAN” AGE: 16
Ο πρώτος τύπος δεδομένων είναι boolean, όπου μπορεί να έχει δύο τιμές: true ή false. Η τιμή της ΣΔΣ είναι κινητής υποδιαστολής. Το YAML υποστηρίζει επίσης τον μηδενικό τύπο δεδομένων όπως έχουμε για τα “Ζητήματα”. Η τιμή του “Name” είναι μια συμβολοσειρά που πρέπει να αναφέρεται σε διπλά ή μονά εισαγωγικά. Το YAML υποστηρίζει επίσης συμβολοσειρά πολλαπλών γραμμών και συμβολοσειρά πολλαπλών γραμμών ως ενιαία για αναγνωσιμότητα.
Χορδές πολλαπλών γραμμών και μονογραμμών
--- About: > Hello this is Ryan From Alabama and I like to Play soccer.
Το σύμβολο > σάς επιτρέπει να γράψετε μια συμβολοσειρά σε πολλές γραμμές. Η πρόταση είναι στην πραγματικότητα μια περιγραφή μιας γραμμής αν και έχουμε πολλές γραμμές.
Μπορούμε επίσης να έχουμε πολλές συμβολοσειρές γραμμής αν χρησιμοποιήσουμε το | σύμβολο όπως επιτρέπεται:
About: | This is a multiline string And will be printed line wise.
Λίστα
Οι λίστες είναι πολύ σημαντικές στο YAML.
Ένα παράδειγμα της λίστας δίνεται παρακάτω.
--- - apple - banana - mango
Η αντιστοίχιση από βαθμωτό σε λίστες φαίνεται παρακάτω, κάτι που είναι πολύ σημαντικό για τα περισσότερα αρχεία διαμόρφωσης.
--- Fruits: Apples Banana Guava
Απαιτείται ένθεση για την αντιστοίχιση του βαθμωτή σε λίστα. Μπορούμε επίσης να έχουμε πολλές ένθετες λίστες, όπως φαίνεται στο παρακάτω παράδειγμα.
Automobiles: Car: Hyundai Volkswagen Ford
Εδώ τα αυτοκίνητα είναι φωλιασμένα μέσα σε αυτοκίνητα και η Hyundai μέσα στα αυτοκίνητα. Αυτό είναι ένα παράδειγμα πολλαπλής ένθεσης. Μπορούμε να έχουμε πολλαπλές φωλιές όσο θέλουμε.
Subjects: Engineering: Mechanical engineering: Design and manufacture Automobile Control and Design Civil engineering: Structural engineering Hydropower Arts: Medieval Modern Painting
Το YAML παρέχει επίσης σύμβολα & και * ως άγκυρα και αναφορές στην άγκυρα για να αποφευχθεί η αντιγραφή. Είναι απαραίτητα σε αρχεία διαμόρφωσης σε πλαίσια όπως το Ruby on Rails για να γίνει το αρχείο YAML μικρότερο.
Δείτε το παρακάτω παράδειγμα
<span class="hljs-attr">details:</span> <span class="hljs-meta">&details</span> <span class="hljs-attr">name:</span> <span class="hljs-string">"John" </span> age: 18
profession: engineer << : * details
που ισοδυναμεί με:
profession: engineer name: "John" age: 18
YAML στην Python
Η Python υποστηρίζει YAML, συμπεριλαμβανομένων ορισμένων λειτουργικών μονάδων όπως το ruamel και το pyyaml. Ξεκινήστε εγκαθιστώντας το pyyaml
pip εγκατάσταση pyyaml
Για το σεμινάριο, δημιουργήστε ένα αρχείο με όνομα details.yaml
name: "john" age:18 gender: male
Δημιουργήστε ένα άλλο αρχείο με το όνομα feed.yaml με το ακόλουθο περιεχόμενο:
sports: football basketball cricket baseball --- countries: Brazil Lithuania Australia USA
Ας ξεκινήσουμε διαβάζοντας το αρχείο details.yaml
import yaml with open('details.yaml') as f: data = yaml.load(f, Loader=yaml.FullLoader) print(data)
Αφού τρέξουμε το αρχείο details.py, έχουμε την ακόλουθη έξοδο
$ python details.py {'name': "john", 'age': 18, 'gender': male}
import yaml with open(r'feed.yaml') as file: # The FullLoader parameter handles the conversion from YAML # scalar values to Python the dictionary format fruits_list = yaml.load(file, Loader=yaml.FullLoader) print(fruits_list)
Γράψιμο YAML σε αρχεία στην Python
import yaml dict_file = [{'sports' : ['hockey', 'rugby', 'tennis', 'ping pong', 'football', 'badminton']}, {'countries' : ['Jamaica', 'England', 'Nepal', 'Netherlands', 'South Africa', 'Bolivia', 'Portugal']}] with open(r'E:data.yaml', 'w') as file: #create a new yaml file data = yaml.dump(dict_file, file)
Υλοποίηση YAML στο Node.js
Η Node.js είναι μια γλώσσα επεξεργασίας από την πλευρά του διακομιστή και η σειριοποίηση δεδομένων έχει τεράστια σημασία στη διαδικασία ανάπτυξης.
Για το σεμινάριο μας, ας εξετάσουμε το ακόλουθο αρχείο example.yaml:
name:John age:18 Hobbies: Hobby1:Football Hobby2:BasketBall Hobby3:Hockey Job: -System administrator -Programmer
Έχουμε μια βιβλιοθήκη npm διαθέσιμη για το Node.js που ονομάζεται js-yaml. Ας ξεκινήσουμε εγκαθιστώντας τη μονάδα από
npm install js-yaml
Στη συνέχεια χρησιμοποιούμε τη μονάδα js-yaml στο αρχείο μας.
const yaml = require('js-yaml'); //initialize js-yaml const fs = require('fs'); //initialize filestream try { const result = yaml.load(fs.readFileSync('example.yml', 'utf8')); console.log(result); } catch (e) { console.log(e); //catch exception }
συμπέρασμα
Στα σύγχρονα πλαίσια προγραμματισμού και εφαρμογές όπου αποθηκεύονται ή διανέμονται δεδομένα, το YAML γίνεται ολοένα και πιο κοινό στα αρχεία διαμόρφωσης. Η YAML στοχεύει πολλές από τις ίδιες εφαρμογές επικοινωνίας με την επεκτάσιμη γλώσσα σήμανσης (XML), αλλά έχει μια ελάχιστη σύνταξη που είναι σκόπιμα διαφορετική από την XML.
Τα αρχεία YAML μπορούν να δημιουργηθούν για σταθερές δομές δεδομένων χρησιμοποιώντας εντολές εκτύπωσης που γράφουν τόσο τα δεδομένα όσο και τη συγκεκριμένη διακόσμηση του YAML. Ωστόσο, ένας αποκλειστικός εκπομπός YAML είναι προτιμότερος για την απόρριψη διαφόρων ή πολύπλοκων ιεραρχικών δεδομένων. Ομοίως, με κανονικές εκφράσεις, τα βασικά αρχεία YAML (π.χ. ζεύγη κλειδιού-τιμής) αναλύονται εύκολα.