Envoyer une chaîne JSON dans une requête POST en Go

Jay Singh 30 janvier 2023
  1. Envoyer une chaîne JSON dans une requête POST en Go
  2. Envoi d’une chaîne JSON dans une requête POST dans Golang
Envoyer une chaîne JSON dans une requête POST en Go

La notation d’objet JavaScript (JSON) est un format de transmission de données couramment utilisé dans le développement Web. Il est simple à utiliser et à comprendre.

Vous pouvez créer une requête JSON POST avec le langage Go, mais vous devez importer plusieurs packages Go. Le package net/HTTP inclut un bon support client et serveur HTTP.

Le package JSON de Go fournit également l’encodage et le décodage JSON.

Dans ce didacticiel, vous apprendrez à utiliser le langage Go pour effectuer des requêtes JSON POST. Dans ce didacticiel, vous apprendrez à utiliser le langage Go pour fournir une chaîne JSON en tant que requête POST.

Envoyer une chaîne JSON dans une requête POST en Go

Un fichier JSON de base contenant une liste de cours et de parcours est présenté ci-dessous.

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

Le code ci-dessous montre comment soumettre l’objet USER JSON au service reqres.in pour construire une requête utilisateur.

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)
    }
}

Production:

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

Envoi d’une chaîne JSON dans une requête POST dans Golang

Voici le code 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)
        }

}

Production:

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