Trimiterea unei solicitări HTTP este esențială pentru orice aplicație care trebuie să comunice prin internet. Aflați cum să trimiteți o varietate de solicitări HTTP folosind Go.

Unul dintre principiile fundamentale care guvernează funcționarea World Wide Web este schimbul de cereri și răspunsuri. Când trimiteți o solicitare de acces la o pagină web, serverul răspunde cu datele corespunzătoare.

Protocoalele populare care guvernează diferite tipuri de comunicare pe internet includ HTTP (Protocol de transfer hipertext), FTP (Protocol de transfer de fișiere) și SMTP (Protocol simplu de transfer de e-mail).

HTTP este protocolul pe care îl veți utiliza de obicei atunci când vizualizați un site web sau utilizați o aplicație activată pentru web. De asemenea, puteți lucra cu solicitări HTTP din mai multe limbaje de programare, inclusiv Go.

Ce este o solicitare HTTP?

HTTP definește modul în care clienții, cum ar fi browserele web, trimit cereri către servere care returnează apoi un răspuns. O solicitare HTTP conține informații despre o resursă pe care clientul încearcă să o acceseze. Mesajul de solicitare cuprinde de obicei o adresă URL care identifică resursa și alte date opționale, cum ar fi anteturile și parametrii de interogare.

instagram viewer

Sunt mai multe tipuri de cereri HTTP, inclusiv GET, POST, PUT, DELETE, HEAD, OPTIONS și CONNECT. Primele patru tipuri de metode sunt cele mai comune; ele oglindesc operațiunile CRUD de citire, creare, actualizare și respectiv ștergere.

Tipul de solicitare PUT este adesea folosit interschimbabil cu tipul de cerere PATCH. Ei ating același scop, doar diferă în ceea ce privește datele pe care se așteaptă să le includă în cerere.

Trimiterea cererilor folosind metode HTTP comune

Go este încorporat http pachet oferă un set de funcții și structuri pe care le puteți utiliza pentru a crea servere web și a gestiona solicitările HTTP. Este un pachet foarte robust și toate cadrele web Go sunt construite deasupra acestuia într-un fel sau altul. Este un subpachet de Go net pachet.

Pentru a crea o solicitare HTTP în Go, puteți utiliza http. Cerere nouă() funcția și setați metoda adecvată, adresa URL, anteturile și corpul cererii. După crearea solicitării, puteți utiliza Go net/http pachetelor http. Client{} structura pentru a o rula și a primi răspunsul.

Următoarele exemple de cod folosesc reqres.in, un API disponibil public pentru testarea solicitărilor HTTP. Îl puteți folosi pentru a testa solicitările GET, POST, PUT și DELETE din programele dvs. Go.

Solicitare POST

Codul de mai jos este o funcție care trimite o solicitare POST către /api/users punctul final al reqres.in pentru a crea un utilizator nou cu un nume și un loc de muncă.

pachet principal

import (
„octeți”
"encoding/json"
"fmt"
"io"
"net/http"
)

funccreaza utilizator(nume, job şir) {
fmt. Println(„Se creează un utilizator...”)

apiUrl := " https://reqres.in/api/users"
userData := []octet(`{"nume":"` + nume + `","job":"` + job + `"}`)

// creează o nouă cerere http
cerere, eroare := http. Cerere nouă("POST", apiUrl, octeți. NewBuffer (userData))
cerere. Antet. A stabilit("Tipul de conținut", „aplicație/json; set de caractere=utf-8")

// trimite cererea
client := &http. Client{}
răspuns, eroare := client. face (cere)

dacă eroare != zero {
fmt. Println (eroare)
}

responseBody, eroare := io. Readall (răspuns. Corp)

dacă eroare != zero {
fmt. Println (eroare)
}

formattedData := formatJSON(responseBody)
fmt. Println("Stare: ", raspuns. Stare)
fmt. Println(„Corpul de răspuns:”, formattedData)

// curățați memoria după execuție
amâna raspuns. Corp. Închide()
}

formatJSON este o funcție personalizată pe care o puteți scrie pentru a formata datele de ieșire. Iată cum îl puteți implementa:

// funcția de formatare a datelor JSON
funcformatJSON(date []octet)şir {
var out octeți. Tampon
err := json. Indentare(&out, date, "", " ")

dacă greș!= zero {
fmt. Println (eroare)
}

d := afară. octeți()
întoarcereşir(d)
}

Puteți apela la creaza utilizator() functioneaza intr-un program ca acesta:

funcprincipal() {
fmt. Println(„Se efectuează solicitarea POST...”)
creaza utilizator("Tim Omolana", "Scriitor")
}

Când rulați programul într-un terminal, folosind aleargă comandă, veți vedea rezultate ca aceasta:

Cerere GET

Următorul cod este o funcție care trimite o solicitare GET pentru a prelua un utilizator de pe serverul reqres.in folosind ID-ul unic.

// main.go
funcgetUser(id şir) {
fmt. Println(„Se obține utilizator prin ID...”)

// faceți o solicitare GET către API pentru a obține utilizatorul după ID
apiUrl := " https://reqres.in/api/users/" + id
cerere, eroare := http. Cerere nouă("OBȚINE", apiUrl, zero)

dacă eroare != zero {
fmt. Println (eroare)
}

cerere. Antet. A stabilit("Tipul de conținut", „aplicație/json; set de caractere=utf-8")

client := &http. Client{}
răspuns, eroare := client. face (cere)

dacă eroare != zero {
fmt. Println (eroare)
}

responseBody, eroare := io. Readall (răspuns. Corp)

dacă eroare != zero {
fmt. Println (eroare)
}

formattedData := formatJSON(responseBody)
fmt. Println("Stare: ", raspuns. Stare)
fmt. Println(„Corpul de răspuns:”, formattedData)

// curățați memoria după execuție
amâna raspuns. Corp. Închide()
}

O solicitare GET nu trimite date către server, așa că nu acceptă sau trimite un corp de solicitare către server atunci când este făcută. Iată cum va arăta un exemplu de apel la funcția de mai sus:

funcprincipal() {
fmt. Println(„Se efectuează solicitarea GET...”)
getUser("2")
}

Ieșire:

Solicitare PUT

Cererea PUT este foarte asemănătoare cu o solicitare POST, deoarece trimite și date către server. Diferența majoră este că POST creează o resursă nouă, în timp ce PUT actualizează una existentă.

Iată o implementare a unei cereri PUT:

// main.go
funcupdateUser(nume, job, id şir) {
fmt. Println(„Se actualizează utilizatorul...”)

// faceți o solicitare PUT către API pentru a actualiza utilizatorul
apiUrl := " https://reqres.in/api/users/" + id
userData := []octet(`{"nume":"` + nume + `","job":"` + job + `"}`)

// creează o nouă cerere http PUT
cerere, eroare := http. Cerere nouă("A PUNE", apiUrl, octeți. NewBuffer (userData))
cerere. Antet. A stabilit("Tipul de conținut", „aplicație/json; set de caractere=utf-8")

// Corpul funcției rămas din funcția createUser...
// Faceți o cerere, obțineți răspuns și ștergeți memoria...
}

Din acest cod, puteți vedea singurele diferențe dintre cererea PUT și cererea POST de mai sus sunt numele metodei și adresa URL. Când utilizați un PUT pentru a actualiza datele existente, va trebui să adăugați id-ul la adresa URL a solicitării. Un exemplu de apel la această funcție ar arăta astfel:

func principal() {
// actualizați intrarea cu ID-ul 2.
updateUser(„Tim Newname”, „Scriitor de personal”, "2")
}

Codul de mai sus actualizează utilizatorul și produce următoarea ieșire:

Solicitare DELETE

Utilizați metoda de solicitare DELETE pentru a efectua o operație de ștergere pe un server web. O solicitare de ștergere șterge resursa identificată de URI. O solicitare DELETE în Go arată astfel:

funcdeleteUser(id şir) {
fmt. Println(„Se șterge utilizatorul...”)
// faceți o solicitare DELETE către API pentru a șterge utilizatorul
apiUrl := " https://reqres.in/api/users/" + id

// creează o nouă cerere http
cerere, eroare := http. Cerere nouă("ȘTERGE", apiUrl, zero)
cerere. Antet. A stabilit("Tipul de conținut", „aplicație/json; set de caractere=utf-8")

client := &http. Client{}
răspuns, eroare := client. face (cere)
dacă eroare != zero {
fmt. Println (eroare)
}

fmt. Println("Stare: ", raspuns. Stare)
}

O solicitare DELETE nu acceptă și nici nu returnează un corp, de aceea nu este nevoie să parseze sau să formateze corpul cererii și răspunsului JSON. Răspunsul returnează doar o stare pentru a indica succesul sau eșecul. Iată cum arată un exemplu de apel la funcție cu rezultatul acesteia:

funcprincipal() {
fmt. Println(„Se efectuează solicitarea DELETE...”)
deleteUser("2")
}

Ieșire:

Economisiți timp utilizând http. Post() și http. Obține() metode din net/http pachet de făcut POST și OBȚINE solicită direct, fără a fi nevoie să utilizați Cerere nouă() funcția și Client{} structura pentru a crea și a face cererea separat. Verificați net/http documentație pentru mai multe informatii.

Efectuarea de solicitări HTTP în aplicațiile Go

The http pachetul din Go oferă tot ceea ce este necesar pentru a face solicitări HTTP și a gestiona răspunsurile în aplicațiile Go. Funcțiile și structurile furnizate de pachet vă permit să creați și să trimiteți diferite tipuri de solicitări, cum ar fi GET, POST, PUT, DELETE și multe altele.

Acest lucru facilitează construirea de aplicații web în Go care pot interacționa cu alte servicii web și API-uri. O modalitate bună de a obține mai familiarizat cu efectuarea de solicitări HTTP în Go este construirea unei aplicații care face solicitări către un alt API REST de a ta.