Go로 RESTful API 사용하기

Go로 RESTful API 사용하기

RESTful API는 웹을 통한 데이터 전송에 널리 사용되는 아키텍처입니다. RESTful API는 일반적으로 HTTP를 사용하므로 상태 비저장이 중요한 경우에 적합합니다.





GPU 온도를 확인하는 방법

다른 서버 측 언어와 마찬가지로 Go에서 HTTP 프로토콜과 상호 작용하고 HTTP 요청을 할 수 있습니다.





Go에서 RESTful API 사용 시작하기

그만큼 http 패키지는 Go에서 HTTP 프로토콜과 상호 작용하는 데 필요한 대부분의 기능을 제공합니다. 여기에는 HTTP 요청이 포함되며 반드시 필요한 것은 아닙니다. Gin 또는 데이터베이스와 같은 외부 종속성 .





MAKEUSEOF 오늘의 비디오

당신은 사용할 수 있습니다 http API를 사용하고 페이지를 가져오는 패키지 Go에서 웹 스크래핑 .

Go에서 HTTP 요청을 시작하려면 이 패키지를 가져오세요.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

당신은 사용할 것입니다 바이트 바이트 슬라이스를 조작하는 패키지, json 요청 데이터를 포맷하기 위한 패키지, fmt 표준 출력에 쓰기 위한 패키지, 아이오틸 입출력을 위한 패키지, 그리고 http 요청을 보내기 위한 패키지.

Go의 간단한 GET 요청

전형적인 가져 오기 서버에서 데이터 읽기를 요청하고 API의 특성 및 사양에 따라 데이터에 대한 매개변수를 제공할 수 있습니다.





이 튜토리얼에서는 httpbin의 간단한 요청 및 응답 서비스를 사용하여 RESTful API를 사용하는 방법을 배웁니다.

다음은 Go로 HTTP 요청을 하는 예입니다.





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

그만큼 URL 변수는 요청을 보내는 엔드포인트입니다. 그만큼 얻다 메소드는 URL을 받아 실행합니다. 얻다 요청하고 헤더와 본문을 포함하여 응답을 반환합니다.

요구 사항에 따라 요청의 오류를 처리할 수 있습니다. 오류가 없으면 계속해서 필요한 정보를 추출할 수 있습니다. 얻다 요구.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

응답의 신체 필드는 응답의 본문을 보유합니다. 사용 모두 읽기 방법 아이오틸 패키지에서 응답 본문을 읽고 가능한 오류를 처리할 수 있습니다.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

그만큼 또 다른 명령문은 읽기 작업에서 오류가 없는 경우 응답 본문을 콘솔에 인쇄합니다.

다음은 결과입니다 가져 오기 httpbin의 끝점에 요청합니다.

  GET 요청의 결과

Go의 간단한 POST 요청

일반적인 POST 요청은 서버에 데이터 페이로드를 제공하고 서버는 작업에 따라 응답을 반환합니다.

다음은 POST 요청의 일부로 서버에 JSON 페이로드를 인코딩하기 위한 간단한 구조입니다.

type JSON struct { 
info string
message string
}

그만큼 JSON 구조체는 정보 그리고 메시지 문자열 필드를 만들고 요청에 대한 구조체 인스턴스를 초기화합니다.

url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

그만큼 URL 변수는 httpbin 웹사이트의 POST 요청 엔드포인트를 저장합니다. 그만큼 json인스턴스 변수는 구조화된 데이터를 저장하고 보내는 데 사용할 수 있는 JSON 구조체의 인스턴스입니다.

당신은 사용할 수 있습니다 육군 원수 방법 json 요청에 대한 JSON 형식을 지정하는 패키지입니다.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

그만큼 육군 원수 이 메서드는 처리할 수 있는 오류도 반환합니다. JSON 마샬링 작업에 오류가 없으면 POST 요청을 진행할 수 있습니다.

당신은 사용할 수 있습니다 게시하다 POST 요청을 수행하는 방법. 그만큼 게시하다 메서드는 URL 끝점, 요청의 콘텐츠 유형 및 페이로드의 버퍼를 사용합니다. 응답과 오류를 반환합니다.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

다시, 다음을 사용하여 응답 본문을 읽을 수 있습니다. 모두 읽기 방법 아이오틸 패키지:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

그만큼 Println 명령문은 HTTP 요청의 결과를 콘솔에 출력합니다.

Windows 10에서 가상 상자를 사용하는 방법

httpbin 문서 지정하면 이 POST 엔드포인트는 사용자가 보낸 요청 데이터를 반환합니다.

  POST 요청의 결과

Go에서 웹 앱 구축은 쉽습니다.

의존성 없이 Go에서 다양한 기능을 가진 웹 애플리케이션을 구축할 수 있습니다.

그만큼 http 패키지에는 대부분의 작업에 필요한 기능이 있습니다. 이 패키지를 다음과 같은 다른 사람들과 함께 사용할 수 있습니다. json JSON 작업을 위한 패키지, 문맥 시그널링을 위한 패키지와 템플릿을 위한 템플릿 패키지. 표준 라이브러리에는 다른 많은 패키지가 있습니다.