golang이 요청을 보냅니다

王林
풀어 주다: 2023-05-21 22:08:07
원래의
1260명이 탐색했습니다.

Go는 효율적이고 안정적인 동시 네트워크 애플리케이션을 작성하는 데 매우 적합한 오픈 소스 프로그래밍 언어입니다. 뛰어난 성능과 작성 용이성으로 인해 Go는 많은 애플리케이션에서 선택되는 프로그래밍 언어가 되었습니다. 이 기사에서는 Go를 사용하여 HTTP 요청을 보내는 방법을 다룹니다.

  1. 먼저 net/http 패키지를 소개합니다.

Go에서 HTTP 요청을 보내는 첫 번째 단계는 net/http 패키지를 소개하는 것입니다. HTTP 클라이언트 및 서버 생성 등을 포함한 많은 기능을 제공합니다.

import "net/http"

  1. HTTP 클라이언트 생성

HTTP 클라이언트를 생성하려면 http.Client 구조를 사용해야 합니다. 다음을 사용하여 생성할 수 있습니다:

client := &http.Client{}

클라이언트에서 수정할 수 있는 옵션도 많습니다. 예를 들어 시간 초과를 설정하고 프록시 서버를 사용할 수 있습니다. 다음은 시간 초과 및 프록시 서버의 예입니다.

timeout := time.Duration(5 * time.Second)
transport := &http.Transport{

Proxy: http.ProxyURL(proxyUrl),
로그인 후 복사

}
client := &http.Client{

Timeout:   timeout,
Transport: transport,
로그인 후 복사

}

프록시 서버는 선택 사항입니다. 프록시 서버를 사용할 필요가 없다면 빈 프록시 URL을 직접 사용할 수 있습니다:

proxyUrl, err := url.Parse("")

  1. Send HTTP GET request

이제 우리는 HTTP 클라이언트에서 Requested 전송을 시작할 수 있습니다. 가장 간단한 요청은 HTTP GET 요청입니다. 우리는 Get 함수를 사용하여 GET 요청을 보냅니다.

resp, err := client.Get("https://www.example.com/path/to/resource")

func main() {

resp, err := http.Get("https://www.example.com/path/to/resource")
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
로그인 후 복사

}

요청이 성공하면 서버는 응답을 반환합니다. 응답 상태 코드, 응답 본문 등 응답에서 내용을 읽을 수 있습니다. 참고: 응답 본문 리소스를 해제하려면 응답 본문을 읽은 후 resp.Body.Close() 메서드를 호출해야 합니다.

  1. HTTP POST 요청 보내기

GET 요청 외에도 HTTP POST 요청을 보낼 수도 있습니다. POST 요청은 일반적으로 서버에 데이터를 제출하는 데 사용됩니다. Post 함수를 사용하여 다음과 같이 POST 요청을 생성할 수 있습니다:

values ​​​​:= map[string]string{"username": "Administrator", "password": "Password"}
jsonValue, _ := json . Marshal(values)
url := "http://example.com/login"
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonValue))
req.Header.Set( " Content-Type", "application/json")

func main() {

values := map[string]string{"username": "管理员", "password": "密码"}
jsonValue, _ := json.Marshal(values)
resp, err := http.Post("http://example.com/login", "application/json", bytes.NewBuffer(jsonValue))
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
로그인 후 복사

}

위 코드에서는 NewRequest 함수를 사용하여 POST 요청을 생성합니다. 요청 본문을 bytes.NewBuffer 함수에 전달합니다. 여기서 본문은 JSON 형식을 사용하여 인코딩됩니다. 그런 다음 서버가 요청 본문이 JSON 형식임을 알 수 있도록 Content-Type 헤더를 "application/json"으로 설정합니다.

  1. 다른 유형의 HTTP 요청 보내기

Go에서는 PUT, DELETE, PATCH, OPTIONS, HEAD 등과 같은 다른 유형의 HTTP 요청을 보낼 수 있습니다. 이러한 요청을 보내려면 http.NewRequest 함수를 사용할 수 있습니다. 다음은 PUT 요청을 사용하여 JSON 파일을 보내는 예입니다.

values ​​​​:= map[string]string{"name": "John Doe", "age": "29"}
jsonValue, _ := json.Marshal(values)
req, err := http.NewRequest("PUT", "http://example.com/users/123", bytes.NewBuffer(jsonValue))
req.Header.Set("Content -Type", "application/json")

func main() {

values := map[string]string{"name": "John Doe", "age": "29"}
jsonValue, _ := json.Marshal(values)
req, err := http.NewRequest("PUT", "http://example.com/users/123", bytes.NewBuffer(jsonValue))
if err != nil {
        // handle error
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
로그인 후 복사

}

DELETE, PATCH, OPTIONS 및 HEAD 요청을 보내려면 http.NewRequest 함수의 첫 번째 매개변수를 관련 HTTP 메서드로 변경하면 됩니다. . 예를 들어 DELETE 요청을 보내려면 첫 번째 매개변수를 "DELETE"로 변경합니다.

  1. 결론

이 글에서는 Go를 사용하여 HTTP 요청을 보내는 방법을 다루었습니다. 우리는 HTTP 클라이언트를 생성하고 HTTP GET 및 POST 요청을 서버에 보냈습니다. 또한 PUT, DELETE, PATCH, OPTIONS, HEAD 등과 같은 다른 유형의 HTTP 요청을 보내는 방법도 다루었습니다.

실제 개발에서는 더 많은 옵션과 기능을 사용해야 하는 경우가 많습니다. 이는 http.Client 구조의 다양한 속성을 설정하여 달성할 수 있습니다. 이러한 방법을 사용하면 Go에서 쉽게 HTTP 요청을 보내고 응답을 처리할 수 있습니다. 웹 애플리케이션, 분산 시스템, 백엔드 서비스 또는 기타 네트워크 애플리케이션을 구축하든 Go를 사용하면 쉽게 작업을 완료할 수 있습니다.

위 내용은 golang이 요청을 보냅니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿