Notice
Recent Posts
Recent Comments
Link
투케이2K
86. (Go Lang) [Mac Os] Go 문법 : net/http 네트워크 통신 - Post http 요청 수행 및 StatusCode , Header , Body 응답 확인 본문
Go Lang (Go 언어)
86. (Go Lang) [Mac Os] Go 문법 : net/http 네트워크 통신 - Post http 요청 수행 및 StatusCode , Header , Body 응답 확인
투케이2K 2024. 2. 24. 21:44[개발 환경 설정]
개발 언어 : Go
[소스 코드]
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
// ---------------------------------------------------
// [기본 설명]
// ---------------------------------------------------
// "io" 패키지는 Go 에서 입출력 스트림 데이터를 처리 시 사용합니다
// ---------------------------------------------------
// "net/http" 패키지는 Go 에서 http 통신을 수행 시 사용됩니다
// ---------------------------------------------------
// 참고 사이트 : https://pkg.go.dev/net/http
// ---------------------------------------------------
// ---------------------------------------------------
// [HTTP 요청 주소 정의]
REQ_URL := "https://jsonplaceholder.typicode.com/posts"
// [구조체 생성]
en_user := En_User{1, 1}
// [Json 인코딩 수행 : Marshal]
jsonBytes, en_err := json.Marshal(en_user)
if en_err != nil {
panic(en_err)
}
// [Json 바이트를 문자열로 변경]
jsonString := string(jsonBytes)
// [Request Body 생성]
reqBody := bytes.NewBufferString(jsonString)
// ---------------------------------------------------
// [Request 객체 정의]
req, err := http.Post(REQ_URL, "application/json", reqBody)
if err != nil {
panic(err)
}
// [Request Close]
defer req.Body.Close()
// ---------------------------------------------------
// [Response 데이터 읽기]
RES_CODE := req.StatusCode // 상태 코드
RES_HEADER := req.Header // 응답 헤더
RES_BYTE, err := io.ReadAll(req.Body) // Body 데이터
if err != nil {
panic(err)
}
RES_DATA := string(RES_BYTE)
// ---------------------------------------------------
// [로그 출력]
fmt.Println("")
fmt.Println("----------------------------------------------")
fmt.Println("[로그 출력 수행]")
fmt.Println("----------------------------------------------")
fmt.Println("REQ_URL : ", REQ_URL)
fmt.Println("----------------------------------------------")
fmt.Println("REQ_BODY : ", jsonString)
fmt.Println("----------------------------------------------")
fmt.Println("RES_CODE : ", RES_CODE)
fmt.Println("----------------------------------------------")
fmt.Println("RES_HEADER : ", RES_HEADER)
fmt.Println("----------------------------------------------")
fmt.Println("RES_DATA : ", RES_DATA)
fmt.Println("----------------------------------------------")
fmt.Println("")
}
// ---------------------------------------------------
// [JSON 인코딩에 사용될 구조체 생성]
type En_User struct {
UserId int `json:"userId"`
Id int `json:"id"`
}
// ---------------------------------------------------
[결과 출력]
반응형
'Go Lang (Go 언어)' 카테고리의 다른 글
Comments