Żądanie Golang HTTP

Żądanie Golang HTTP

Żądanie HTTP odnosi się do działania wykonanego przez klienta HTTP na określonym zasobie HTTP (Protocol). Zasób jest identyfikowany głównie przez adres URL jako nazwa domeny lub adres IP.

Żądania HTTP są jednym z najbardziej składowych elementów nowoczesnej sieci. Korzystając z żądania HTTP, możemy żądać zasobów, takich jak strony internetowe, filmy, obrazy i inne pliki ze zdalnego serwera.

W tym artykule dowiemy się, jak zbudować podstawowy klient HTTP za pomocą języka programowania Go.

Wymagania

W tym artykule będziesz potrzebować następujących zasobów:

  1. Kompilator GO zainstalowany w twoim systemie.
  2. Podstawowa wiedza na temat.
  3. Edytor tekstu.

HTTP GET

Pierwszą metodą, którą zamierzamy wdrożyć, jest metoda GET HTTP. Metoda GET pozwala nam żądać danych z określonego zasobu. Na przykład, gdy musimy pobierać artykuły z Linuxhint.serwer COM, używamy metody GET.

Pierwszym krokiem jest upewnienie się, że skonfigurowałeś swój projekt. Jeśli nie znasz, jak tworzyć i pracować z projektem GO, sprawdź nasz samouczek dotyczący instalacji Go.

Po utworzeniu projektu otwórz główny plik GO i zaimportuj pakiet NET/HTTP z biblioteki Go Standard.

Pakiet NET/HTTP zapewnia nam funkcjonalność i narzędzia do złożenia żądania HTTP na zdalne serwery.

Zaimportuj pakiet NET/HTTP, dodając poniższy wiersz w pliku Go.

import (
„net/http”
)

W pakiecie netto/http istnieje metoda GET, która pozwala nam tworzyć metody GET HTTP. Składnia funkcji jest jak pokazana poniżej:

Func Get (URL String) (odpowiedz resp *, błąd błędu)

Funkcja przyjmuje adres URL jako argument i zwraca odpowiedź jako wskaźnik do struktury i błędu (jeśli istnieje).

Jeśli metoda nie napotyka błędu, zwrócona odpowiedź zawiera ciało odpowiedzi z żądanego zasobu.

Aby użyć metody GET, możemy utworzyć kod jak pokazano:

RESP, err: = http.Get ("https: // API.SpacexData.com/v4/uruchomienie/najnowsze ”)
Jeśli err != zero
dziennik.Fatalny (err)

W powyższym przykładzie wywoływamy metodę GET i przekazujemy adres URL do zasobu, do którego chcemy uzyskać dostęp jako ciąg.

W naszym przykładzie używamy API SpaceX.

Jak zauważysz, funkcja zwraca dwie wartości, które przechowujemy w dwóch zmiennych: odpowiednio odpowiednio zwrócona odpowiedź i błąd.

Pamiętaj, że resp nie zawiera jedynie wskaźnika do struktury zawierającej rzeczywiste dane. Dlatego jeśli spróbujemy to wydrukować, otrzymamy mnóstwo pomieszanych danych.

Przykładowe dane wyjściowe z powyższego żądania jest jak pokazano poniżej:

Aby wyświetlić rzeczywiste dane, musimy uzyskać dostęp do właściwości ciała w zwróconej strukturze. Następnie musimy go przeczytać i wydrukować na konsoli lub zapisać w pliku.

W tym celu możemy użyć Ioutil.Metoda ReadMe. Ta metoda jest zdefiniowana w pakiecie Ioutil. Zwraca korpus odpowiedzi i błąd.

UWAGA: Po przeczytaniu ciała odpowiedzi musimy go zamknąć, aby uniknąć blokowania innych operacji w twoim programie.

Możemy to zrobić, ustawiając metodę zamykania do uruchomienia po tym, jak główna funkcja jest ukończona. Słowo kluczowe odroczenia w Go pojawia się w ręku.

Resp.Ciało.Close () pozwala nam zamknąć ciało odpowiedzi po przeczytaniu. Po przeczytaniu ciała odpowiedzi możemy wydrukować go na konsoli, jak zaimplementowano w poniższym kodzie:

Sprawdź nasz samouczek na temat Golang Defer, aby dowiedzieć się więcej

Pakiet Main
import (
„FMT”
„IO/ioutil”
"dziennik"
„net/http”
)
func main ()
RESP, err: = http.Get ("https: // API.SpacexData.com/v4/uruchomienie/najnowsze ”)
Jeśli err != zero
dziennik.Fatalny (err)

// bliskie ciało
odroczyć odpowiednio.Ciało.Zamknąć()
// czytaj ciało
ciało, err: = ioutil.Odczyt (odpowiednio.Ciało)
Jeśli err != zero
dziennik.Fatalny (err)

Powyższy kod wdraża klienta HTTP w Go, w stanie uczynić HTTP żądanie do określonej metody.

Przykładową wartość zwracana jest taka, jak pokazano:

Aby uzyskać lepszą czytelność, możesz sformatować odpowiedź na format czytelnego jsona lub wykonać marszałek i unmarshal, aby wybrać pożądane wyjście.

Sprawdź nasz samouczek na temat marszałka JSON i Unmarshal, aby dowiedzieć się więcej.

HTTP Post

Kolejna część klienta HTTP jest metoda postu. Metoda HTTP umożliwia wysyłanie danych do serwera i wykonywanie akcji w określonym zasadzie. Może to tworzyć, usuwać lub aktualizować zasób.

W Go możemy złożyć żądanie pocztowe za pomocą pakietu Net/HTTP. Zapewnia nam metodę postu, umożliwiając nam wysyłanie danych do serwera.

Składnia funkcji jest jak pokazana poniżej:

Func Post (URL, ContentType String, Body Io.Czytnik) (resp *odpowiedź, błąd błędu)

Funkcja przyjmuje trzy argumenty:

  1. Adres zasobu.
  2. Rodzaj treści ciała do wysyłania na serwer, ciąg
  3. Ciało żądania typu IO.Czytelnik

Funkcja powinna następnie zwrócić odpowiedź i błąd. Należy pamiętać, że musimy przekonwertować dane, aby wysłać na serwer na akceptowalny format. Możemy to zrobić, przekształcając dane JSON w IO.Czytelnik, który jest w zasadzie interfejsem w Go.

Sprawdź kod źródłowy, aby dowiedzieć się więcej.

Konwersja danych JSON na IO.Typ czytelnika obejmuje dwa kroki:

Pierwszym jest zakodowanie danych JSON w formacie bajtów. Możemy to zrobić, JSON Marshaling, jak omówiono w naszym samouczku.

Po zakodowaniu możemy przekonwertować dane na typ zaimplementowany przez IO.Interfejs czytnika za pomocą metody newBuffer. Ta metoda zwraca IO.Typ czytnika, który możemy następnie przejść do metody postu.

Przykładowy blok kodu jest jak pokazano poniżej:

Body, _: = JSON.Marszałek (mapa [string] string
„ID”: „1”,
„Witryna”: „Linuxhint”
)
encoded_json: = bajty.Newbuffer (ciało)

Po uporządkowaniu wszystkich części możemy wywołać metodę postu do określonego zasobu. Należy pamiętać, że ten samouczek używa manekina i linków.

Pakiet Main
import (
„Bajty”
„Kodowanie/JSON”
„FMT”
„IO/ioutil”
"dziennik"
„net/http”
)
func main ()
Body, _: = JSON.Marszałek (mapa [string] string
„ID”: „1”,
„Witryna”: „Linuxhint”
)
RESP, err: = http.Post („http: // przykład.com/v4/endpoint/post ”,„ Application/Json ”, Body)
Jeśli err != zero
dziennik.Fatalny (err)

odroczyć odpowiednio.Ciało.Zamknąć()
return_body, err: = ioutil.Odczyt (odpowiednio.Ciało)
Jeśli err != zero
dziennik.Fatalny (err)

fmt.Println (ciąg (korpus))

Powyższa metoda implementuje prosty klient HTTP, który może dokonać metod postu HTTP do określonego zasobu.

Wniosek

W tym artykule pokazuje, jak zbudować fundamentalnego klienta HTTP za pomocą języka programowania Go. GO jest wyjątkowo szybki, jeśli chodzi o serwowanie HTTP. Korzystając z wiedzy w tym artykule, możesz rozwinąć klienta na aplikację w pełni fuget.

Koduj.