Go
Platform API 토큰을 받으려면 REST 가이드부터 시작하세요. 이 예시는 Go 표준 라이브러리를 사용하므로 클라이언트 생성이나 추가 패키지가 필요하지 않습니다.
main.go로 저장하세요:
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"net/url"
"os"
"time"
)
type catalog struct {
ID string `json:"catalogId"`
}
type page struct {
Catalogs []catalog `json:"catalogs"`
NextPageToken string `json:"nextPageToken"`
}
type detail struct {
ID string `json:"catalogId"`
Description string `json:"description"`
}
func main() {
token := os.Getenv("CR_RECONSTRUCT_API_TOKEN")
if token == "" { log.Fatal("set CR_RECONSTRUCT_API_TOKEN") }
base := "https://reconstruct.dev/api/v1/platform"
client := &http.Client{Timeout: 10 * time.Second}
get := func(path string, result any) error {
req, err := http.NewRequest(http.MethodGet, base+path, nil)
if err != nil { return err }
req.Header.Set("Authorization", "Bearer "+token)
resp, err := client.Do(req)
if err != nil { return err }
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("API returned %s", resp.Status)
}
return json.NewDecoder(resp.Body).Decode(result)
}
var first page
if err := get("/catalogs?pageSize=10", &first); err != nil { log.Fatal(err) }
for _, item := range first.Catalogs {
var info detail
if err := get("/catalogs/"+url.PathEscape(item.ID), &info); err != nil {
log.Fatal(err)
}
fmt.Println(info.ID, info.Description)
}
if first.NextPageToken != "" { fmt.Println("Next page token:", first.NextPageToken) }
}
go run main.go를 실행하세요. nextPageToken을 URL 인코딩한 pageToken 쿼리 매개변수로 전달하여 카탈로그를 계속 읽으세요.