오늘도 한 뼘 더
[Golang] net/http 패키지로 API 호출하기 본문
728x90
반응형
# 배경
Go 코드로 간단하게 API를 호출하고 싶다. Go에서 http 패키지를 지원하여 해당 패키지를 사용하여 API 호출을 해보도록 한다.
# net/http 패키지
# POST API 사용하기
- http.Post 사용
resp, err := http.Post(url(string), content-type (string), &buf)
필자는 Content-type을 application/json으로 설정하여 json으로 값을 변경해야 했다.
- json.marshal
marshal, err := json.Marshal(map[string]string{"text": fmt.Sprintf("%+v", err)})
if err != nil {
log.Fatal("Json Marshal Error: ",err)
}
requestBody := bytes.NewBuffer(marshal)
main.go [예시]
- DB 연결을 하는 중에 에러가 나서 해당 에러를 slack으로 보내는 예시이다.
package main
import (
"bytes"
"database/sql"
"encoding/json"
"fmt"
_ "github.com/go-sql-driver/mysql"
"log"
"net/http"
"os"
)
func main() {
ConnectionString := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s",
os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_NAME"))
db, err := sql.Open("mysql", ConnectionString)
if err != nil {
marshal, err := json.Marshal(map[string]string{"text": fmt.Sprintf("%+v", err)})
if err != nil {
log.Fatal("Json Marshal Error: ",err)
}
requestBody := bytes.NewBuffer(marshal)
resp, err := http.Post("https://hooks.slack.com/", "application/json", requestBody)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
fmt.Print("Error : ", err)
}
db.Close()
}
728x90
반응형
'Study > Go' 카테고리의 다른 글
[Golang] Golang CI Lint 설치하고 사용하기 (0) | 2022.09.20 |
---|---|
[Golang] AWS SNS(Simple Notification Service) 주제 리스트 조회하기 (0) | 2022.09.06 |
[Golang] DB 연결할 때, timeout 설정하기 (context) (0) | 2022.09.02 |
[Golang] Go 환경변수 쓰기/ 읽기 (0) | 2022.08.31 |
[Golang] .env 사용하여 환경변수 설정 (0) | 2022.08.30 |
Comments