Go의 POST 요청에서 JSON 문자열 보내기
Jay Singh
2023년1월30일
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"
}