NCMBはモバイル向けのBaaS(mobile Backend as a Service)ですが、サーバー側のデータとNCMB上のデータを連係させたいというニーズは良くあります。
そんなときには各言語向けのSDKがあると便利です。サーバー向けにはRuby、Python、PHP、Java、C#のSDKがあります(すべて公式サポート対象外の、コミュニティSDKという位置づけです)。
今回はGo言語向けのSDK開発をはじめたので、その使い方を紹介します。この記事ではファイルストアの使い方を解説します。
ソースコード
ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseになります。
インストール
SDKのインストールは下記コマンドで行います。
go get -u github.com/NCMBMania/ncmb_go
インポート
続けてSDKをインポートします。
import (
"github.com/NCMBMania/ncmb_go"
)
初期化
NCMBより取得したアプリケーションキー、クライアントキーを使って初期化します。
ncmb := NCMB.Initialize("YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY")
ファイルストアの使い方
ファイルアップロードはFileメソッドから開始します。引数はファイル名です。
file := ncmb.File("test.txt")
ファイルの内容はバイト文字列を付与します。
text := []byte("Hello, NCMB!")
file.Bytes = text
コンテンツを適用したら、 Upload
メソッドでアップロードを行います。ファイルのmime typeはバイト文字列から自動的に決定します。
bol, err := file.Upload()
if err != nil {
t.Errorf("file.Upload() = %T, %s", bol, err)
}
ファイルの内容を更新する
ファイルの内容を更新する場合は Upload
を利用します。
text := []byte("更新内容")
file.Bytes = text
bol, err := file.Upload()
if err != nil {
t.Errorf("file.Upload() = %T, %s", bol, err)
}
ファイルのACLを更新する
ファイルの内容ではなく、ACL(アクセス権限)を更新する場合には Update
メソッドを使います。
acl, err := file.GetAcl()
if err != nil {
t.Errorf("file.GetAcl() = %T, %s", acl, err)
}
acl.SetRoleReadAccess("Admin", true)
file.SetAcl(acl)
bol, err = file.Update()
if err != nil {
t.Errorf("file.Update() = %T, %s", bol, err)
}
新規作成する際には、元々Aclを適用してください。
file := ncmb.File("test.txt")
text := []byte("Hello, NCMB!")
file.Bytes = text
acl := ncmb.Acl()
acl.SetRoleReadAccess("Admin", true)
file.SetAcl(acl)
bol, err := file.Upload()
if err != nil {
t.Errorf("file.Upload() = %T, %s", bol, err)
}
ファイルのダウンロード
ファイルをダウンロードする際には Download
メソッドを使います。ダウンロードされる内容はバイト文字列なので、必要に応じて変換してください。
data, err := file.Download()
if err != nil {
t.Errorf("file.Download() = %s", err)
}
ファイルの削除
ファイルの削除は Delete
メソッドを使います。
bol, err := file.Delete()
まとめ
まだ基本的な機能しかありませんが、徐々にバージョンアップしていきます。
Go言語を使ってWebアプリケーションを開発している方は、そのデータ保存先としてNCMBを利用してみてください。