Notice
Recent Posts
Recent Comments
Link
투케이2K
84. (Go Lang) [Mac Os] Go 문법 : net/http 네트워크 통신 - Patch 방식 Body Json 요청 수행 및 응답 값 확인 본문
Go Lang (Go 언어)
84. (Go Lang) [Mac Os] Go 문법 : net/http 네트워크 통신 - Patch 방식 Body Json 요청 수행 및 응답 값 확인
투케이2K 2024. 2. 24. 21:25[개발 환경 설정]
개발 언어 : 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/1"
// [구조체 생성]
en_user := En_User{"foo"}
// [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.NewRequest(http.MethodPatch, REQ_URL, reqBody)
if err != nil {
panic(err)
}
// [Request 헤더 정의]
req.Header.Set("Content-Type", "application/json; charset=utf-8")
// ---------------------------------------------------
// [http client 초기화]
client := &http.Client{}
// [Response 데이터 읽기]
response, err := client.Do(req)
if err != nil {
panic(err)
}
// [Response 데이터 읽기]
RES_CODE := response.StatusCode // 상태 코드
RES_BYTE, err := io.ReadAll(response.Body) // Body 데이터
if err != nil {
panic(err)
}
RES_DATA := string(RES_BYTE)
// ---------------------------------------------------
// [로그 출력]
fmt.Println("")
fmt.Println("----------------------------------------------")
fmt.Println("[로그 출력 수행]")
fmt.Println("----------------------------------------------")
fmt.Println("REQ_TYPE : POST")
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_DATA : ", RES_DATA)
fmt.Println("----------------------------------------------")
fmt.Println("")
}
// ---------------------------------------------------
// [JSON 인코딩에 사용될 구조체 생성]
type En_User struct {
Title string `json:"title"`
}
// ---------------------------------------------------
[결과 출력]
반응형
'Go Lang (Go 언어)' 카테고리의 다른 글
Comments