Qiita API를 go에서 두드려 보았습니다.

6871 단어 5QiitaAPIgin

소개



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

좋은 웹페이지 즐겨찾기