Golang 데이터 커넥터 1부

4054 단어 go

소개





서로 다른 시스템을 함께 연결하는 Zapier(방금 a $5 billion valuation를 쳤음)와 같은 몇 가지 도구가 있습니다. 흥미로운 아이디어이지만 실제로 Zapier 없이 어떻게 커넥터(또는 통합)를 생성합니까? 이 게시물 시리즈에서는 무언가를 구축하는 방법을 단계별로 설명합니다.

으스스해지기



Ghost 블로그에서 다른 서비스로 데이터를 옮기고 싶다고 가정해 봅시다. 충분히 간단하게 들립니다. 이 게시물에서는 지속적인 연결에 대해 걱정하지 않고 A지점에서 콘텐츠를 가져올 것입니다. 다음에는 B지점에 대해 걱정하겠습니다.

좋습니다. 좋습니다. 하지만 어디서부터 시작해야 할까요? 시작하기 가장 좋은 곳은 https://ghost.org/docs/content-api/ 에 있는 Ghost 콘텐츠 API 설명서입니다. 이렇게 하면 계획을 시작하는 데 필요한 모든 정보를 얻을 수 있습니다. content/posts 에서 호출할 수 있는 라이브https://demo.ghost.io/ghost/api/v4/content/posts/?key=22444f78447824223cefc48062 엔드포인트도 있으며, 이를 통해 우리가 무엇을 받을 수 있는지 알 수 있습니다.



가서 가져와



이 간단한 커넥터의 1단계는 Gohttp 패키지 덕분에 상대적으로 쉽습니다. 게시물 콘텐츠의 첫 번째 페이지에 연락하여 요청하는 데 사용합니다. 새 요청을 생성하여 시작하겠습니다. 전체 코드 목록은 이 게시물 하단에 있습니다.

    req, err := http.NewRequest(http.MethodGet, "https://demo.ghost.io/ghost/api/v4/content/posts/?key=22444f78447824223cefc48062", nil)

http.NewRequest는 HTTP 요청의 메서드를 가져오며, 이 경우에는 GET , 요청의 URL 및 본문입니다. 이번에는 몸체가 없으므로 nil 를 사용하겠습니다. 좋습니다. 요청이 모두 설정되었지만 어떻게 사용합니까? 다시 http로 돌아가서 http.DefaultClient 메서드Do()를 사용하여 실제로 요청을 할 수 있습니다. 우리는 단순히 요청을 전달하고 새 변수에서 응답을 캡처합니다.

    resp, err := http.DefaultClient.Do(req)


그리고 그게 다야! 통화가 정상인 한 데이터가 있습니다. 우리는 실제로 오류가 있는 작업을 수행하지 않고 대신 구제 조치를 취할 것입니다. 그냥 종료하는 대신 일종의 재시도를 할 수 있다고 생각합니다.

여기에서 응답 본문을 콘솔에 기록합니다.

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(string(body))



다음번



다음 게시물에서는 받은 데이터로 실제로 무언가를 할 수 있도록 프로젝트를 수정할 것입니다.



이 게시물이 마음에 드십니까?


How about buying me a coffee?



코드 목록




package main

import (
    "encoding/json"
    "fmt"
    "io"
    "log"
    "net/http"
)

func main() {
    req, err := http.NewRequest(http.MethodGet, "https://demo.ghost.io/ghost/api/v4/content/posts/?key=22444f78447824223cefc48062", nil)
    if err != nil {
        log.Fatal(err)
    }

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        log.Fatal(err)
    }

    defer resp.Body.Close()

    body, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(string(body))
}

좋은 웹페이지 즐겨찾기