| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- 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()
- // Чтение ответа
- // ...
- // Обработка ответа
- // ...
- }
|