반응형
http 패키지는 golang에서 HTTP 클라이언트 및 서버를 작성하기 위해 제공되는 표준 패키지다.
이 패키지는 HTTP 요청을 보내고 응답을 받는 클라이언트와, HTTP 요청을 처리하고 응답을 보내는
서버를 구현할 수 있는 기능을 제공한다.
http 패키지를 사용하여 간단한 HTTP 클라이언트나 서버를 구현할 수 있으며,
이를 통해 웹 애플리케이션을 만들 수 있다.
그렇다면 http 패키지의 주요 기능을 살펴보자.
HTTP 클라이언트(Client):
http 패키지는 HTTP 클라이언트를 생성하고, GET, POST, PUT, DELETE 등의 HTTP 요청을 생성하고 보낼 수 있다.
또한, 클라이언트는 응답을 받아서 처리할 수 있다.
클라이언트는 네트워크 요청과 응답을 처리하는데 유용한 기능들을 제공한다.
HTTP 서버(Server):
http 패키지는 HTTP 서버를 구현하는데 필요한 기능들을 제공한다.
서버는 들어오는 HTTP 요청을 처리하고, 요청에 따라 적절한 응답을 생성하여 클라이언트에게 보낸다.
서버는 라우팅, 핸들러 등을 사용하여 요청을 처리하고 응답을 보낼 수 있다.
HTTP 핸들러(Handler):
http 패키지에서는 핸들러를 등록하여 요청을 처리한다.
핸들러는 특정 URL 패턴에 따라 요청을 처리하고, 적절한 응답을 생성하여 보낼 수 있다.
그외에도 HTTP헤더, 쿠키, 캐싱, 리다이렉트 등과 같은 기능들도 제공한다.
예제 코드
GET 요청
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("여기에 요청할 주소를 입력하세요.")
if err != nil {
fmt.Println("GET request failed:", err)
return
}
defer resp.Body.Close()
fmt.Println("GET Response Status:", resp.Status)
// Response body를 읽어옴
// 원래는 io.ReadCloser 타입으로 읽어오지만 간단한 예제를 위해 생략
}
POST 요청
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "여기에 요청할 주소를 입력하세요."
payload := []byte(`{"title": "ujs", "body": "How could person name be uhm jun sik", "userId": 1}`)
resp, err := http.Post(url, "application/json", bytes.NewBuffer(payload))
if err != nil {
fmt.Println("POST request failed:", err)
return
}
defer resp.Body.Close()
fmt.Println("POST Response Status:", resp.Status)
// Response body를 읽어옴
// 원래는 io.ReadCloser 타입으로 읽어오지만 간단한 예제를 위해 생략
}
PUT
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "여기에 요청할 주소를 입력하세요."
payload := []byte(`{"title": "uhm", "body": "js", "userId": 1}`)
req, err := http.NewRequest("PUT", url, bytes.NewBuffer(payload))
if err != nil {
fmt.Println("PUT request creation failed:", err)
return
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("PUT request failed:", err)
return
}
defer resp.Body.Close()
fmt.Println("PUT Response Status:", resp.Status)
// Response body를 읽어옴
// 원래는 io.ReadCloser 타입으로 읽어오지만 간단한 예제를 위해 생략
}
DELETE
package main
import (
"fmt"
"net/http"
)
func main() {
url := "여기에 요청할 주소를 입력하세요."
req, err := http.NewRequest("DELETE", url, nil)
if err != nil {
fmt.Println("DELETE request creation failed:", err)
return
}
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("DELETE request failed:", err)
return
}
defer resp.Body.Close()
fmt.Println("DELETE Response Status:", resp.Status)
// Response body를 읽어옴
// 원래는 io.ReadCloser 타입으로 읽어오지만 간단한 예제를 위해 생략
}
반응형
'Golang' 카테고리의 다른 글
Golang mysql 사용/연동 하기 (0) | 2023.08.08 |
---|---|
Golang 난수 생성(math/rand) (0) | 2023.06.30 |
디스코드가 Go 대신 Rust로 전환하는 이유 (0) | 2023.06.14 |
Golang 웹 크롤링/크롤러 (0) | 2023.06.01 |
Golang 슬라이스 정렬(오름차순, 내림차순) (0) | 2023.04.10 |
댓글