Κατανάλωση RESTful API με το Go

Κατανάλωση RESTful API με το Go

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





Όπως κάθε γλώσσα του διακομιστή, μπορείτε να αλληλεπιδράσετε με το πρωτόκολλο HTTP και να κάνετε αιτήματα HTTP στο Go.





Ξεκινώντας Καταναλώνοντας RESTful API στο Go

ο http Το πακέτο παρέχει το μεγαλύτερο μέρος της λειτουργικότητας που θα χρειαστείτε για την αλληλεπίδραση με το πρωτόκολλο HTTP στο Go. Αυτό περιλαμβάνει την υποβολή αιτημάτων HTTP και δεν χρειάζεστε απαραίτητα εξωτερικές εξαρτήσεις, όπως το Gin ή μια βάση δεδομένων .





ΚΑΤΑΣΚΕΥΗ ΒΙΝΤΕΟ ΤΗΣ ΗΜΕΡΑΣ

Μπορείτε να χρησιμοποιήσετε το http πακέτο για κατανάλωση API και ανάκτηση σελίδων απόξεση ιστού στο Go .

πώς να συνδέσετε ένα τηλέφωνο σε έναν υπολογιστή

Εισαγάγετε αυτά τα πακέτα για να ξεκινήσετε να κάνετε αιτήματα HTTP στο Go.



import ( 
"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" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

ο url μεταβλητή είναι το τελικό σημείο στο οποίο στέλνετε το αίτημα. ο Παίρνω μέθοδος παίρνει το URL, εκτελεί το Παίρνω αίτημα και επιστρέφει την απάντηση, συμπεριλαμβανομένων των κεφαλίδων και του σώματος της.

Μπορείτε να χειριστείτε τυχόν σφάλματα από το αίτημα ανάλογα με τις απαιτήσεις σας. Εάν δεν υπάρχουν σφάλματα, μπορείτε να προχωρήσετε στην εξαγωγή των πληροφοριών που χρειάζεστε από το Παίρνω αίτηση.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

Η απάντηση Σώμα Το πεδίο περιέχει το σώμα της απόκρισης. Χρησιμοποιώντας το Διαβάστε τα όλα μέθοδος του ioutil πακέτο, μπορείτε να διαβάσετε το σώμα απόκρισης και να χειριστείτε πιθανά σφάλματα.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

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

Ιδού το αποτέλεσμα του ΠΑΙΡΝΩ αίτημα στο τελικό σημείο του httpbin.

  αποτέλεσμα από το αίτημα GET

Ένα απλό αίτημα POST in Go

Τα τυπικά αιτήματα POST παρέχουν ωφέλιμα φορτία δεδομένων στον διακομιστή και ο διακομιστής επιστρέφει μια απάντηση ανάλογα με τη λειτουργία.

Ακολουθεί μια απλή δομή για την κωδικοποίηση ενός ωφέλιμου φορτίου JSON στον διακομιστή ως μέρος του αιτήματος POST.

type JSON struct { 
info string
message string
}

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

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

ο url Η μεταβλητή αποθηκεύει το τελικό σημείο αιτήματος POST από τον ιστότοπο httpbin. ο jsonInstance Η μεταβλητή είναι μια εμφάνιση της δομής JSON που μπορείτε να χρησιμοποιήσετε για να αποθηκεύσετε και να στείλετε δομημένα δεδομένα.

Μπορείτε να χρησιμοποιήσετε το Διευθετώ μέθοδος από το json πακέτο για να μορφοποιήσετε JSON για το αίτημα.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

ο Διευθετώ Η μέθοδος επιστρέφει επίσης ένα σφάλμα που μπορείτε να χειριστείτε. Εάν δεν υπάρχουν σφάλματα με τη λειτουργία JSON marshaling, μπορείτε να προχωρήσετε στην υποβολή του αιτήματος POST.

καλύτερη εφαρμογή ζωγραφικής για ενήλικες

Μπορείτε να χρησιμοποιήσετε το Θέση μέθοδο για την υποβολή αιτημάτων POST. ο Θέση μέθοδος λαμβάνει το τελικό σημείο διεύθυνσης URL, τον τύπο περιεχομένου του αιτήματος και ένα buffer του ωφέλιμου φορτίου. Επιστρέφει την απάντηση και ένα σφάλμα.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Και πάλι, μπορείτε να διαβάσετε το σώμα απόκρισης χρησιμοποιώντας το Διαβάστε τα όλα μέθοδος του ioutil πακέτο:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

ο Println Η δήλωση εξάγει το αποτέλεσμα του αιτήματος HTTP στην κονσόλα σας.

Όπως το τεκμηρίωση httpbin καθορίζει, αυτό το τελικό σημείο POST επιστρέφει τα δεδομένα αιτήματος που το στέλνετε.

  αποτέλεσμα από το αίτημα POST

Η δημιουργία εφαρμογών Ιστού στο Go είναι εύκολη

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

ο http Το πακέτο έχει τις λειτουργίες που θα χρειαστείτε για τις περισσότερες από τις λειτουργίες σας. Μπορείτε να χρησιμοποιήσετε αυτό το πακέτο με άλλα όπως το json πακέτο για λειτουργίες JSON, το συμφραζόμενα πακέτο για σηματοδότηση και το πακέτο προτύπων για προτύπου. Υπάρχουν πολλά άλλα πακέτα στην τυπική βιβλιοθήκη.