Enviar una cadena JSON en una solicitud POST en Go

Jay Singh 30 enero 2023
  1. Enviar una cadena JSON en una solicitud POST en Go
  2. Envío de una cadena JSON en una solicitud POST en Golang
Enviar una cadena JSON en una solicitud POST en Go

La notación de objetos de JavaScript (JSON) es un formato de transmisión de datos de uso común en el desarrollo web. Es simple de usar y entender.

Puede crear una solicitud JSON POST con el lenguaje Go, pero necesita importar varios paquetes Go. El paquete net/HTTP incluye un buen soporte de servidor y cliente HTTP.

El paquete JSON en Go también proporciona codificación y decodificación JSON.

En este tutorial, aprenderá a usar el lenguaje Go para realizar solicitudes JSON POST. En este tutorial, aprenderá a usar el lenguaje Go para entregar una cadena JSON como una solicitud POST.

Enviar una cadena JSON en una solicitud POST en Go

A continuación se muestra un archivo JSON básico que contiene una lista de cursos y rutas.

{
    "Courses": [
        "Golang",
        "Python"
    ],
    "Paths": [
        "Coding Interviews",
        "Data Structure"
    ]
}

El siguiente código muestra cómo enviar el objeto USER JSON al servicio reqres.in para construir una solicitud de usuario.

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)
type User struct {
    Name string  	`json:"name"`
    Job string 	    `json:"job"`
}

func main(){

    user := User{
        Name: "Jay Singh",
        Job: "Golang Developer",
    }

    body, _ := json.Marshal(user)

    resp, err := http.Post("https://reqres.in/api/users", "application/json", bytes.NewBuffer(body) )

    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()

    if resp.StatusCode == http.StatusCreated {
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            panic(err)
        }
        jsonStr := string(body)
        fmt.Println("Response: ", jsonStr)

    } else {
        fmt.Println("Get failed with error: ", resp.Status)
    }
}

Producción :

Response:  {
        "name":"Jay Singh",
        "job":"Golang Developer",
        "id":"895",
        "createdAt":"2022-04-04T10:46:36.892Z"
}

Envío de una cadena JSON en una solicitud POST en Golang

Aquí está el código JSON simple.

{
    "StudentName": "Jay Singh",
    "StudentId" : "192865782",
    "StudentGroup": "Computer Science"
}
package main

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

type StudentDetails struct {
        StudentName  string `json:"StudentName"`
        StudentId    string `json:"StudentId"`
        StudentGroup string `json:"StudentGroup"`
}

func main() {

        studentDetails := StudentDetails{
                StudentName:  "Jay Singh",
                StudentId:    "192865782",
                StudentGroup: "Computer Science",
        }

        body, _ := json.Marshal(studentDetails)

        resp, err := http.Post("<https://reqres.in/api/users>", "application/json", bytes.NewBuffer(body))

        if err != nil {
                panic(err)
        }

        defer resp.Body.Close()

        if resp.StatusCode == http.StatusCreated {
                body, err := ioutil.ReadAll(resp.Body)
                if err != nil {
                        panic(err)
                }
                jsonStr := string(body)
                fmt.Println("Response: ", jsonStr)

        } else {
                fmt.Println("Get failed with error: ", resp.Status)
        }

}

Producción :

Response:  {
        "StudentName":"Deven Rathore",
        "StudentId":"170203065",
        "StudentGroup":"Computer Science",
        "id":"868",
        "createdAt":"2022-04-04T12:35:03.092Z"
}