Day 10 with Go-Lang
HTTP Post 호출
Go 의 표준 패키지인 http 패키지는 웹 관련 클라이언트 및 서버 기능을 제공한다. 그 중 http.Post()
메소드는 웹서버로 간단히 데이터를 POST 하는데 사용된다.
아래 예제는 테스트 웹사이트인 httpbin.org 에 임의 텍스트를 POST 를 사용해 보내는 코드이다. Post() 메소드의 첫 번째 Parameter 는 Post 를 받는 URL 을 적고, 두 번째는 Request Body 의 MIME 타입을, 그리고 마지막에는 전송할 데이터를 보낸다. httpbin.org/post 는 전송한 데이터를 그대로 리턴하는데, Response 의 Data 를 체크하면 전송 데이터가 그대로 리턴됨을 볼 수 있다.
package main
import (
"bytes"
"io/ioutil"
"net/http"
)
func main() {
// 간단한 http.Post 예제
reqBody := bytes.NewBufferString("Post plain Text")
resp, err := http.Post("http://httpbin.org/post", "text/plain", reqBody)
defer resp.Body.Close()
if err != nil {
panic(err)
}
respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
str := string(respBody)
println(str)
}
- HTTP PostForm 호출
http.PostForm()
은 Form 데이터를 보내는 데 유용한 메소드이다. 즉, 일반 웹페이지에서 Submit 버튼을 누르면, 입력 컨트롤들의 데이터를 Form 데이터로 서버에 전송하는데, 이 PostForm() 함수를 사용하면 동일 효과를 내며 데이터를 쉽게 웹 서버로 보낼 수 있다.
아래 예제는 Name 과 Age 데이터를 Form 형식으로 웹서버에 전송하는 예이다. httpbin.org/post 는 전송한 데이터를 그대로 리턴하므로 Response 에서는 form 필드에 Name 과 Age 데이터가 동일함을 확인할 수 있다.
package main
import (
"io/ioutil"
"net/http"
"net/url"
)
func main() {
// 간단한 http.PostForm 예제
resp, err := http.PostForm("http://httpbin.org/post", url.Values{"Name": {"Lee"}, "Age": {"10"}})
defer resp.Body.Close()
if err != nil {
panic(err)
}
// Response 체크
respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
str := string(respBody)
println(str)
}
내일 이어서….
Reference : 예제로 배우는 Go 프로그래밍