package main import ( "bytes" "encoding/json" "fmt" "io" "log" "net/http" "net/url" ) // User - структура для представления объекта пользователя type User struct { Name string `json:"name"` ID uint32 `json:"id"` } type Output struct { JSON struct { Name string `json:"name"` ID uint32 `json:"id"` } `json:"json"` URL string `json:"usr"` } func main() { // foo1() // postFormExample() queryExample() } func foo1() { // Создаем экземпляр структуры User var u = User{ Name: "Alex", ID: 1, } // Кодируем структуру User в JSON (байтовый срез) bytesRepresentation, err := json.Marshal(u) if err != nil { log.Fatalln(err) } // Отправляем POST-запрос на сервер с JSON-телом resp, err := http.Post("https://httpbin.org/post", "application/json", bytes.NewBuffer(bytesRepresentation)) if err != nil { log.Fatalln(err) } // Читаем и конвертируем тело ответа в байты bytesResp, err := io.ReadAll(resp.Body) if err != nil { log.Println(err) return } // Выводим содержимое тела ответа // fmt.Println(string(bytesResp)) // Создаем экземпляр ответа сервера var out Output // Декодируем данные в формате JSON и заполняем структуру err = json.Unmarshal(bytesResp, &out) if err != nil { log.Println(err) return } fmt.Printf("%+v\n", out) fmt.Println(out.URL) /* var st string json.Unmarshal(bytesRepresentation, &st) fmt.Println(st) */ } // Отправка данных в виде формы func postFormExample() { formData := url.Values{ "name": {"hello"}, "surename": {"golang post form"}, } resp, err := http.PostForm("https://httpbin.org/post", formData) if err != nil { log.Fatalln(err) } var result map[string]interface{} json.NewDecoder(resp.Body).Decode(&result) log.Println(result["form"]) fmt.Println("OK") } func queryExample() { // Создаем URL с параметрами baseURL := "https://example.com/api/resource" params := url.Values{} params.Add("param1", "value1") params.Add("param2", "value2") fullURL := baseURL + "?" + params.Encode() fmt.Println(fullURL) // Отправляем GET-запрос response, err := http.Get(fullURL) if err != nil { fmt.Println("Ошибка при отправлке GET-запроса:", err) return } defer response.Body.Close() // Чтение ответа // ... // Обработка ответа // ... }