“Запрос Golang API” Ответ

Запрос Golang API

package main

import (
	"encoding/json"
	"io/ioutil"
	"log"
	"net/http"
)

type Login struct {
	Username string `json:"username"`
	Password string `json:"password"`
}

type APIResponse struct {
	Stat_Code uint32 `json:"stat_code"`
	Stat_Msg  string `json:"stat_msg"`
}

func ApiResponse(rw http.ResponseWriter, v *APIResponse) {
	result, err := json.Marshal(v)
	if err != nil {
		log.Fatal(err)
	}
	rw.Write(result)
}

func main() {
	server := http.Server{
		Addr: ":3000",
	}

	http.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) {
		rw.Header().Set("Content-Type", "application/json")

		payload := Login{}

		body, err := ioutil.ReadAll(r.Body)
		if err != nil {
			log.Fatal(err)
		}

		err = json.Unmarshal(body, &payload)
		if err != nil {
			log.Fatal(err)
		}

		if payload.Username != "johndoe13" || payload.Password != "qwerty12" {
			ApiResponse(rw, &APIResponse{Stat_Code: http.StatusBadRequest, Stat_Msg: "Username or password mismatch"})
			defer log.Print("http request error")
			return
		}

		ApiResponse(rw, &APIResponse{Stat_Code: http.StatusOK, Stat_Msg: "Login success"})
		defer log.Print("http request success")
	})

	server.ListenAndServe()
}
Restu Wahyu Saputra

Использование Golang для выполнения вызовов API

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "os"
)

func main() {
    response, err := http.Get("http://pokeapi.co/api/v2/pokedex/kanto/")

    if err != nil {
        fmt.Print(err.Error())
        os.Exit(1)
    }

    responseData, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(responseData))

}
Zealous Zebra

Ответы похожие на “Запрос Golang API”

Вопросы похожие на “Запрос Golang API”

Больше похожих ответов на “Запрос Golang API” по Go

Смотреть популярные ответы по языку

Смотреть другие языки программирования