Τα RESTful API είναι δημοφιλείς αρχιτεκτονικές για μεταφορά δεδομένων στον ιστό. Τα RESTful API συνήθως χρησιμοποιούν HTTP, καθιστώντας τα κατάλληλα για περιπτώσεις όπου η ανιθαγένεια είναι σημαντική.
Όπως κάθε γλώσσα του διακομιστή, μπορείτε να αλληλεπιδράσετε με το πρωτόκολλο HTTP και να κάνετε αιτήματα HTTP στο Go.
Ξεκινώντας Καταναλώνοντας RESTful API στο Go
ο http Το πακέτο παρέχει το μεγαλύτερο μέρος της λειτουργικότητας που θα χρειαστείτε για την αλληλεπίδραση με το πρωτόκολλο HTTP στο Go. Αυτό περιλαμβάνει την υποβολή αιτημάτων HTTP και δεν χρειάζεστε απαραίτητα εξωτερικές εξαρτήσεις, όπως το Gin ή μια βάση δεδομένων.
Μπορείτε να χρησιμοποιήσετε το http πακέτο για κατανάλωση API και ανάκτηση σελίδων απόξεση ιστού στο Go.
Εισαγάγετε αυτά τα πακέτα για να ξεκινήσετε να κάνετε αιτήματα HTTP στο Go.
εισαγωγή (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
Θα χρησιμοποιήσετε το byte πακέτο για χειρισμό κομματιών byte, το json πακέτο για τη μορφοποίηση δεδομένων αιτήματος, το fmt πακέτο για εγγραφή στην τυπική έξοδο, το
ioutil πακέτο για είσοδο και έξοδο, και το http πακέτο για την αποστολή αιτημάτων.Ένα απλό αίτημα GET in Go
Τυπικός ΠΑΙΡΝΩ ζητά δεδομένα ανάγνωσης από έναν διακομιστή και μπορεί να παρέχει παραμέτρους για τα δεδομένα ανάλογα με τη φύση και τις προδιαγραφές του API.
Σε αυτό το σεμινάριο, θα μάθετε πώς να καταναλώνετε RESTful API χρησιμοποιώντας την υπηρεσία απλής αίτησης και απόκρισης του httpbin.
Ακολουθεί ένα παράδειγμα υποβολής αιτήματος HTTP με το Go:
url := "https://httpbin.org/get"
απάντηση, λάθος := http. Λήψη (url)
αν λάθος!= μηδέν {
fmt. Printf("Υπήρξε σφάλμα από το αίτημα API %s", err. Λάθος())
} αλλού {
// συνεχίζει [1] ...
}
ο url μεταβλητή είναι το τελικό σημείο στο οποίο στέλνετε το αίτημα. ο Παίρνω μέθοδος παίρνει στη διεύθυνση URL, εκτελεί το Παίρνω αίτημα και επιστρέφει την απάντηση, συμπεριλαμβανομένων των κεφαλίδων και του σώματος της.
Μπορείτε να χειριστείτε τυχόν σφάλματα από το αίτημα ανάλογα με τις απαιτήσεις σας. Εάν δεν υπάρχουν σφάλματα, μπορείτε να προχωρήσετε στην εξαγωγή των πληροφοριών που χρειάζεστε από το Παίρνω αίτηση.
} αλλού {
//... [1] συνέχισε
answerData, err := ioutil. ReadAll (απάντηση. Σώμα)
αν λάθος!= μηδέν {
fmt. Printf("Παρουσιάστηκε σφάλμα κατά την ανάλυση του σώματος αιτήματος %s", err. Λάθος())
} αλλού {
// συνεχίζει [2] ...
}
}
Η απάντηση Σώμα Το πεδίο περιέχει το σώμα της απόκρισης. Χρησιμοποιώντας το Διαβάστε τα όλα μέθοδος του ioutil πακέτο, μπορείτε να διαβάσετε το σώμα απόκρισης και να χειριστείτε πιθανά σφάλματα.
} αλλού {
//... [2] συνέχισε
fmt. Println(σειρά(responseData))
}
ο αλλού Η δήλωση εκτυπώνει το σώμα απόκρισης στην κονσόλα σας εάν δεν υπάρχουν σφάλματα από τη λειτουργία ανάγνωσης.
Ιδού το αποτέλεσμα του ΠΑΙΡΝΩ αίτημα στο τελικό σημείο του httpbin.
Ένα απλό αίτημα POST in Go
Τα τυπικά αιτήματα POST παρέχουν ωφέλιμα φορτία δεδομένων στον διακομιστή και ο διακομιστής επιστρέφει μια απάντηση ανάλογα με τη λειτουργία.
Ακολουθεί μια απλή δομή για την κωδικοποίηση ενός ωφέλιμου φορτίου JSON στον διακομιστή ως μέρος του αιτήματος POST.
τύπος JSON struct {
πληροφορίες σειρά
μήνυμα σειρά
}
ο JSON η δομή έχει το πληροφορίες και μήνυμα πεδία συμβολοσειράς και θα αρχικοποιήσετε μια παρουσία δομής για το αίτημα.
url := "https://httpbin.org/post"
jsonInstance := JSON {
info: "αναμένοντας επιτυχία",
μήνυμα: «το αίτημα πρέπει ΕΠΙΣΤΡΟΦΗ ",
}
ο url Η μεταβλητή αποθηκεύει το τελικό σημείο αιτήματος POST από τον ιστότοπο httpbin. ο jsonInstance Η μεταβλητή είναι μια εμφάνιση της δομής JSON που μπορείτε να χρησιμοποιήσετε για να αποθηκεύσετε και να στείλετε δομημένα δεδομένα.
Μπορείτε να χρησιμοποιήσετε το Διευθετώ μέθοδος από το json πακέτο για να μορφοποιήσετε JSON για το αίτημα.
jsonData, err := json. Marshal (jsonInstance)
αν λάθος!= μηδέν {
fmt. Println("υπήρξε σφάλμα με το JSON", err. Λάθος())
} αλλού {
// συνεχίζει [1] ...
}
ο Διευθετώ Η μέθοδος επιστρέφει επίσης ένα σφάλμα που μπορείτε να χειριστείτε. Εάν δεν υπάρχουν σφάλματα με τη λειτουργία JSON marshaling, μπορείτε να προχωρήσετε στην υποβολή του αιτήματος POST.
Μπορείτε να χρησιμοποιήσετε το Θέση μέθοδο για την υποβολή αιτημάτων POST. ο Θέση μέθοδος λαμβάνει το τελικό σημείο διεύθυνσης URL, τον τύπο περιεχομένου του αιτήματος και ένα buffer του ωφέλιμου φορτίου. Επιστρέφει την απάντηση και ένα σφάλμα.
} αλλού {
//... συνέχεια [1]
απάντηση, λάθος := http. Δημοσίευση (url, "application/json", bytes. NewBuffer (jsonData))
αν λάθος!= μηδέν {
fmt. Println("υπήρξε σφάλμα με το αίτημα", err. Λάθος())
} αλλού {
// συνεχίζει [2] ...
}
}
Και πάλι, μπορείτε να διαβάσετε το σώμα απόκρισης χρησιμοποιώντας το Διαβάστε τα όλα μέθοδος του ioutil πακέτο:
} αλλού {
//... συνέχεια [2]
data, err := ioutil. ReadAll (απάντηση. Σώμα)
αν λάθος!= μηδέν {
fmt. Println("παρουσιάστηκε σφάλμα κατά την ανάγνωση του σώματος του αιτήματος", err. Λάθος())
} αλλού {
fmt. Println(σειρά(δεδομένα))
}
}
ο Println Η δήλωση εξάγει το αποτέλεσμα του αιτήματος HTTP στην κονσόλα σας.
Όπως το τεκμηρίωση httpbin καθορίζει, αυτό το τελικό σημείο POST επιστρέφει τα δεδομένα αιτήματος που το στέλνετε.
Η δημιουργία εφαρμογών Ιστού στο Go είναι εύκολη
Μπορείτε να δημιουργήσετε εφαρμογές ιστού με διάφορες λειτουργίες στο Go χωρίς εξαρτήσεις.
ο http Το πακέτο έχει τις λειτουργίες που θα χρειαστείτε για τις περισσότερες από τις λειτουργίες σας. Μπορείτε να χρησιμοποιήσετε αυτό το πακέτο με άλλα όπως το json πακέτο για λειτουργίες JSON, το συμφραζόμενα πακέτο για σηματοδότηση και το πακέτο προτύπων για προτύπου. Υπάρχουν πολλά άλλα πακέτα στην τυπική βιβλιοθήκη.