Envoyer une chaîne JSON dans une requête POST en Go
- Envoyer une chaîne JSON dans une requête POST en Go
- Envoi d’une chaîne JSON dans une requête POST dans Golang
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"
}