Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

Go este un limbaj puternic și flexibil pentru construirea de aplicații web. The net pachetul joacă un rol esențial în ecosistemul Go.

La fel ca majoritatea limbajelor de programare pe server, Go este livrat cu un pachet HTTP pentru interacțiunea cu protocolul HTTP. Pachetul Go relevant este http pachet, un subpachet al net pachet.

Ce este pachetul net/http?

The net/http pachetul este una dintre bibliotecile standard din Go. Oferă un set complet de funcții și tipuri pentru construirea de clienți HTTP, servere și alte operațiuni bazate pe HTTP. Acestea includ:

  • Funcții pentru efectuarea cererilor HTTP.
  • Gestionarea cererilor și răspunsurilor.
  • Servirea solicitărilor HTTP.
  • Obiecte înrudite, cum ar fi anteturi și cookie-uri.

The net/http pachetul acceptă, de asemenea, criptarea TLS/SSL, HTTP/2 și alte funcții avansate, făcând pachetul un instrument esențial pentru dezvoltatorii Go.

Multe biblioteci și cadre populare Go, de la setul de instrumente web Gorilla până la cadrul web Echo, se construiesc pe deasupra net/http pachet.

Pornirea unui server HTTP simplu

Pornirea serverelor este una dintre operațiunile de bază pe care trebuie să le înțelegeți pentru a lucra cu protocolul HTTP.

Iată un program pentru rulați un server simplu în Go:

pachet principal

import (
"fmt"
"net/http"
)

// handlerul este un handler tipic HTTP cerere-răspuns în Go; detalii mai târziu
funcmanipulator(w http. ResponseWriter, r *http. Cerere) {
// Fprintf formatează șirul într-un writer
fmt. Fprintf (w, "Salut Lume!")
}

funcprincipal() {
http. HandleFunc("/", handler)
http. ListenAndServe(":8080", zero)
}

The manipulator funcția este un handler tipic cerere-răspuns pentru http pachet. Această funcție scrie șirul „Hello, World!” către autorul de răspuns HTTP.

La rularea codului și la vizitare http://localhost: 8080/ într-un browser web, ar trebui să vedeți „Hello, World!” șir afișat în browserul dvs.

Gestionarea cererilor și răspunsurilor

Puteți gestiona cererile primite cu HandleFunc metoda de http pachet. The HandleFunc metoda preia un șir de rută și o funcție de gestionare.

The http. Cerere metoda este o instanță a cererii primite și puteți utiliza numeroasele metode ale instanței dvs. pentru a interacționa cu solicitările către rută.

http. HandleFunc(„/utilizatori”, func(w http. ResponseWriter, r *http. Cerere) {
intrerupator r. metoda {
caz"OBȚINE":
// gestionează cererea GET
caz"POST":
// gestionează cererea POST
Mod implicit:
http. Eroare (w, „Metoda de solicitare nevalidă”, http. StatusMethodNotAllowed)
}
})

Codul de mai sus folosește http pachet pentru a defini o funcție de gestionare HTTP pentru /users traseu. Funcția de gestionare ascultă cererile HTTP primite pe rută și le procesează pe baza metodei de solicitare (de exemplu, OBȚINE, POST, etc.)

Funcția de gestionare preia ResponseWriter și Cerere metodele ca argumente. The ResponseWriter este o interfață care ajută handlerul să scrie date ca răspuns la client și Cerere este o structură care conține informații despre cererea de intrare, cum ar fi metoda HTTP, URL, anteturi etc.

Funcția de gestionare de mai sus folosește a intrerupator instrucțiune pentru a determina metoda de solicitare și pentru a rula diferite blocuri de cod în funcție de metodă. Dacă metoda este OBȚINE, handlerul se va ocupa de OBȚINE cerere. Altfel, metoda este POST; se va ocupa de POST cerere.

Dacă metoda este altceva, va trimite un http. Eroare cu un mesaj „Metoda de solicitare nevalidă” și a StatusMethodNotAllowedCod de stare HTTP către client.

Puteți scrie înapoi șiruri de caractere către client folosind Scrie metodă a instanței dvs. de scriitor care preia o porțiune de octeți de șiruri și scrie șirul.

w. Scrie([]octet("Salut Lume!"))

Puteți folosi WriteHeader metoda ta ResponseWriter instanță pentru a scrie anteturi către client.

w. WriteHeader (http. StareOK)

Lucrul cu HTTP Middleware

Middleware-ul constă din funcții care interceptează cererile HTTP primite pentru operațiuni înainte ca cererea să treacă la următoarea funcție de gestionare.

Iată un exemplu de înregistrare a funcției de gestionare a middleware-ului în Go:

funcloggingMiddleware(următorul http. manipulator)http.Handler {
întoarcere http. HandlerFunc(func(w http. ResponseWriter, r *http. Cerere) {
// înregistrează cererea
Următorul. Servire HTTP(w, r)
// înregistrează răspunsul
})
}

The loggingMiddleware funcția preia un handler HTTP și returnează un nou handler HTTP. Hander-ul HTTP returnat este o funcție anonimă care preia un scriitor de răspuns HTTP și o solicitare HTTP. Funcția înregistrează cererea și apelează Servire HTTP metoda pe Următorul Http handler, pasând în scrisul de răspuns și cererea ca argumente.

Puteți gestiona funcțiile middleware cu Mâner metoda de http pachet. The Mâner metoda preia ruta și funcția middleware.

http. Mâner("/", loggingMiddleware (http. HandlerFunc (handler)))

Redirecționări cu pachetul HTTP

Redirecționarea este o operațiune populară pentru aplicațiile web care trimit utilizatorii către alte resurse sau pagini web.

Puteți redirecționa către o altă pagină web folosind Redirecţiona metoda de http pachet.

http. Redirecționare (w, r, " http://example.com", http. StareMutatPermanent)

The Redirecţiona metoda ia în ResponseWriter și Cerere instanțe, adresa URL a paginii noi și un cod de stare pentru redirecționare.

Puteți construi API-uri complexe în Go

The http pachetul este un instrument puternic și flexibil pentru construirea de API-uri complexe. Puteți folosi biblioteca standard bogată a Go și altele puternice pachete terțe pentru a adăuga funcționalități la API-urile dvs., cum ar fi conectivitate la baze de date și suport pentru diferite web cadre.

Cu Go, puteți construi API-uri scalabile, de înaltă performanță, care gestionează cu ușurință traficul de solicitări semnificativ și sarcinile complexe de procesare a datelor.