Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "encoding/json"
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "net/http"
- )
- type people struct {
- Number int `json:"number"`
- }
- func main() {
- url := "http://api.open-notify.org/astros.json"
- headers := map[string]string{
- "User-Agent": "learninggo",
- }
- body, err := callApi(url, http.MethodGet, nil, headers)
- if err != nil {
- log.Fatal(err)
- }
- fmt.Println(string(body))
- people1 := people{}
- jsonErr := json.Unmarshal(body, &people1)
- if jsonErr != nil {
- log.Fatal(jsonErr)
- }
- fmt.Println(people1.Number)
- }
- // callApi makes request to url endpoint
- func callApi(url string, method string, reqBody io.Reader, headers map[string]string) ([]byte, error) {
- req, err := http.NewRequest(method, url, reqBody)
- if err != nil {
- log.Fatal(err)
- }
- for key, value := range headers {
- req.Header.Set(key, value)
- }
- var client http.Client
- res, getErr := client.Do(req)
- if getErr != nil {
- return nil, getErr
- }
- if res.Body != nil {
- defer res.Body.Close()
- }
- resBody, readErr := ioutil.ReadAll(res.Body)
- if readErr != nil {
- return nil, getErr
- }
- return resBody, nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement