Qiita API를 go에서 두드려 보았습니다.
소개
Go 언어를 공부하지 않으면 하는 사명감에 빠져 놀아보기로 했습니다.
golang + Qiita API
환경
・ go version go1.13 darwin/amd64
URI 및 기능
Path
HTTP 메소드
기능
/qiita/api/v1/user-info
GET
지정된 사용자의 기사 일람을, 작성 일시의 내림차순으로 돌려줍니다.
사용 패키지
・ gin
gin은 go로 만든 웹 프레임 워크입니다. json 응답 처리 기능도 가지고있는 뛰어난 것입니다.
go get github.com/gin-gonic/gin
파일 구성
❯ tree .
.
├── main.go
└── src
└── controller
└── controller.go
2 directories, 2 files
controller
메인으로부터 호출하는 태스크 처리를 정리하고 있습니다.
controller.go
package controller
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
type Item struct {
Title string `json:"title"`
CreatedAt time.Time `json:"created_at"`
}
// Qiita APIを叩く
func QiitaGET(c *gin.Context) {
resp, err := http.Get("http://qiita.com/api/v2/users/{自身のアカウント名}/items?page=1&per_page=10")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var data []Item
if err := json.Unmarshal(body, &data); err != nil {
log.Fatal(err)
}
c.JSON(http.StatusOK, gin.H{"item": data})
}
main
메인 처리를 기술했습니다.
main.go
package main
import (
"./src/controller"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
v1 := router.Group("/qiita/api/v1")
{
v1.GET("/user-info", controller.QiitaGET)
}
router.Run(":9000")
}
실행
❯ go run main.go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /qiita/api/v1/user-info --> _/Users/********/Desktop/Qiita_PoC_API/src/controller.QiitaGET (3 handlers)
[GIN-debug] Listening and serving HTTP on :9000
API를 두드릴 때 postMan을 사용했습니다.
참고
Qiita API
Reference
이 문제에 관하여(Qiita API를 go에서 두드려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshii0110/items/19f1024e4d9b07ea71e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)