🐚
go-shopifyで出品中の商品の情報のCRUDを行う検証
はじめに
目標
Shopify Admin API を go 言語で操作するための非公式ライブラリである。
API へのアクセスのみでも同様のことが行えるが、簡略化するため今回はgo-shopify
を用いて出品中の商品の情報の操作を行う。
前提
商品の情報を操作するProduct
のみの検証を行う
Shopify 上でプライベートアプリケーションの作成を行い、APIキー
とパスワード
の取得を行っている。
実装
初期化
API キーとパスワードを用いて使う場合は、goshopify.NewClient()
の第 3 引数は空白にする。
app := goshopify.App{
ApiKey: "APIキー",
Password: "パスワード",
}
client := goshopify.NewClient(app, "ショップネーム", "")
商品リストの取得
itemList, err := client.Product.List(nil)
if err != nil {
log.Panicln(err)
}
for _, i := range itemList {
fmt.Println(i.Title)
}
プロダクト ID を指定して情報を取得する
var op interface{}
var productID int64
productID = 7255225860258
item, err := client.Product.Get(productID, op)
if err != nil {
log.Panicln(err)
}
fmt.Println(item.Title)
プロダクト ID を指定して情報の更新を行う
Product
の構造体を渡す。
渡していない情報は上書きされなかった。
var p goshopify.Product
p.ID = 7254096478370
p.Title = "test"
_, err := client.Product.Update(p)
if err != nil {
log.Panic(err)
}
プロダクト ID を指定して商品の登録を行う
アクティブ状態で作成されるので注意
var p goshopify.Product
p.Title = "test"
_, err := client.Product.Create(p)
if err != nil {
log.Panic(err)
}
プロダクト ID を指定して商品の削除を行う
var productID int64
productID = 7255225860258
err := client.Product.Delete(productID)
if err != nil {
log.Panicln(err)
}
Product 構造体
type Product struct {
ID int64 `json:"id,omitempty"`
Title string `json:"title,omitempty"`
BodyHTML string `json:"body_html,omitempty"`
Vendor string `json:"vendor,omitempty"`
ProductType string `json:"product_type,omitempty"`
Handle string `json:"handle,omitempty"`
CreatedAt *time.Time `json:"created_at,omitempty"`
UpdatedAt *time.Time `json:"updated_at,omitempty"`
PublishedAt *time.Time `json:"published_at,omitempty"`
PublishedScope string `json:"published_scope,omitempty"`
Tags string `json:"tags,omitempty"`
Options []ProductOption `json:"options,omitempty"`
Variants []Variant `json:"variants,omitempty"`
Image Image `json:"image,omitempty"`
Images []Image `json:"images,omitempty"`
TemplateSuffix string `json:"template_suffix,omitempty"`
MetafieldsGlobalTitleTag string `json:"metafields_global_title_tag,omitempty"`
MetafieldsGlobalDescriptionTag string `json:"metafields_global_description_tag,omitempty"`
Metafields []Metafield `json:"metafields,omitempty"`
AdminGraphqlAPIID string `json:"admin_graphql_api_id,omitempty"`
}
参考
go-shopify/product.go
Discussion