RESTful API izmantošana ar Go

RESTful API izmantošana ar Go

RESTful API ir populāras arhitektūras datu pārsūtīšanai tīmeklī. RESTful API parasti izmanto HTTP, padarot tās piemērotas gadījumiem, kad bezvalstniecība ir svarīga.





Tāpat kā jebkura servera puses valoda, Go var mijiedarboties ar HTTP protokolu un veikt HTTP pieprasījumus.





Darba sākšana RESTful API izmantošana Go

The http pakotne nodrošina lielāko daļu funkcionalitātes, kas nepieciešama, lai mijiedarbotos ar HTTP protokolu pakalpojumā Go. Tas ietver HTTP pieprasījumu veikšanu, un jums tas nav obligāti nepieciešams ārējās atkarības, piemēram, Džins vai datu bāze .





DIENAS VIDEO MAKEUSEOF

Jūs varat izmantot http pakotne, lai izmantotu API un ielādētu lapas tīmekļa skrāpēšana Go .

Importējiet šīs pakotnes, lai lietotnē Go sāktu veikt HTTP pieprasījumus.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Jūs izmantosit baiti pakotne, lai manipulētu ar baitu šķēlītēm, json pakotne pieprasījuma datu formatēšanai, fmt pakotne, lai ierakstītu standarta izvadē, ioutil pakotne ievadei un izvadei, un http pakete pieprasījumu nosūtīšanai.

Vienkāršs GET pieprasījums pakalpojumā Go

Tipiski GŪT pieprasa nolasīt datus no servera un var nodrošināt datu parametrus atkarībā no API veida un specifikācijas.





Šajā apmācībā jūs uzzināsit, kā izmantot RESTful API, izmantojot httpbin vienkāršo pieprasījumu un atbildes pakalpojumu.

Šeit ir piemērs HTTP pieprasījuma veikšanai, izmantojot 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] ...
}

The url mainīgais ir galapunkts, uz kuru sūtāt pieprasījumu. The gūt metode uzņem URL, izpilda gūt pieprasījumu un atgriež atbildi, tostarp tās galvenes un pamattekstu.

kā atrast izdzēstos Facebook ziņojumus

Atkarībā no jūsu prasībām varat apstrādāt visas pieprasījuma kļūdas. Ja kļūdu nav, varat turpināt iegūt nepieciešamo informāciju no gūt pieprasījumu.

} 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] ...
}
}

Atbilde ir Ķermenis lauks satur atbildes ķermeni. Izmantojot Lasīt visu metode ioutil pakotni, varat izlasīt atbildes pamattekstu un rīkoties ar iespējamām kļūdām.

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

The cits paziņojums izdrukā atbildes pamattekstu jūsu konsolei, ja lasīšanas darbībā nav kļūdu.

Lūk, rezultāts GŪT pieprasījumu httpbin galapunktam.

  GET pieprasījuma rezultāts

Vienkāršs POST pieprasījums pakalpojumā Go

Tipiski POST pieprasījumi nodrošina datu lietderīgo slodzi serverim, un serveris atgriež atbildi atkarībā no darbības.

Šeit ir vienkārša struktūra JSON derīgās slodzes kodēšanai serverī kā daļa no POST pieprasījuma.

type JSON struct { 
info string
message string
}

The JSON struktūrai ir info un ziņa virknes lauki, un jūs inicializēsit pieprasījuma struktūras gadījumu.

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

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

The url mainīgais saglabā POST pieprasījuma galapunktu no httpbin vietnes. The jsonInstance mainīgais ir JSON struktūras gadījums, ko varat izmantot strukturētu datu glabāšanai un sūtīšanai.

Jūs varat izmantot maršals metode no json pakotni, lai formatētu pieprasījuma JSON.

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

The maršals metode arī atgriež kļūdu, ar kuru varat rīkoties. Ja JSON šķirošanas darbībā nav kļūdu, varat turpināt POST pieprasījuma izpildi.

Jūs varat izmantot Post metode POST pieprasījumu veikšanai. The Post metode ņem URL galapunktu, pieprasījuma satura veidu un lietderīgās slodzes buferi. Tas atgriež atbildi un kļūdu.

} 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] ...
}
}

Atkal varat izlasīt atbildes pamattekstu, izmantojot Lasīt visu metode ioutil iepakojums:

} 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))
}
}

The Println paziņojums izvada HTTP pieprasījuma rezultātu jūsu konsolei.

httpbin dokumentācija norāda, šis POST galapunkts atgriež pieprasījuma datus, ko jūs to nosūtāt.

  POST pieprasījuma rezultāts

Tīmekļa lietotņu izveide pakalpojumā Go ir vienkārša

Programmā Go varat izveidot tīmekļa lietojumprogrammas ar dažādām funkcijām bez atkarībām.

The http pakotnei ir funkcijas, kas jums būs nepieciešamas lielākajai daļai jūsu darbību. Jūs varat izmantot šo paketi ar citiem, piemēram, json pakotne JSON operācijām, kontekstā pakete signalizācijai un veidņu pakotne veidņu veidošanai. Standarta bibliotēkā ir daudz citu pakotņu.