Go의 POST 요청에서 JSON 문자열 보내기

Jay Singh 2023년1월30일
  1. Go의 POST 요청에서 JSON 문자열 보내기
  2. Golang의 POST 요청에서 JSON 문자열 보내기
Go의 POST 요청에서 JSON 문자열 보내기

JSON(JavaScript Object Notation)은 웹 개발에서 일반적으로 사용되는 데이터 전송 형식입니다. 사용하고 이해하기 쉽습니다.

Go 언어로 JSON POST 요청을 생성할 수 있지만 여러 Go 패키지를 가져와야 합니다. net/HTTP 패키지에는 우수한 HTTP 클라이언트 및 서버 지원이 포함되어 있습니다.

Go의 JSON 패키지는 JSON 인코딩 및 디코딩도 제공합니다.

이 자습서에서는 Go 언어를 사용하여 JSON POST 요청을 수행하는 방법을 배웁니다. 이 자습서에서는 Go 언어를 사용하여 JSON 문자열을 POST 요청으로 전달하는 방법을 배웁니다.

Go의 POST 요청에서 JSON 문자열 보내기

코스 및 경로 목록이 포함된 기본 JSON 파일은 아래와 같습니다.

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

아래 코드는 USER JSON 객체를 서비스 reqres.in에 제출하여 사용자 요청을 구성하는 방법을 보여줍니다.

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

출력:

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

Golang의 POST 요청에서 JSON 문자열 보내기

다음은 간단한 JSON 코드입니다.

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

}

출력:

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