エンドポイントの設定
base='https://osaka5-default-rtdb.asia-southeast1.firebasedatabase.app'
Realtime Databaseを開き、赤枠内をbase
変数に設定
Firebaseプロジェクト作成(80秒) Firebaseは無料で利用できます。クレカは登録してはいけません
データを追加
curl
curl $base/users.json -d '{"名前":"山田太郎","出身地":"沖縄"}'
JavaScript
await fetch(base+'/users.json', {
method: 'POST',
body: '{"名前":"山田花子","出身地":"北海道"}'
})
Google Apps Script
UrlFetchApp.fetch(base+'/users.json', {
method: 'POST',
payload: '{"名前":"JohnDoe","出身地":"米国"}'
})
データを取得
curl
curl $base/users.json
JavaScript
await fetch(base+'/users.json').then(r => r.json())
Google Apps Script
JSON.parse(UrlFetchApp.fetch(base+'/users.json'))
すべてのデータを取得
curl
curl $base/.json
JavaScript
await fetch(base+'/.json').then(r => r.json())
Google Apps Script
JSON.parse(UrlFetchApp.fetch(base+'/.json'))
データを上書き
curl
curl $base/users/1.json -X PUT -d '{"名前":"山田太郎","出身地":"石垣島"}'
JavaScript
await fetch(base+'/users/2.json', {
method: 'PUT',
body: '{"名前":"山田花子","出身地":"択捉島"}'
})
Google Apps Script
UrlFetchApp.fetch(base+'/users/3.json', {
method: 'PUT',
payload: '{"名前":"JohnDoe","出身地":"カナダ"}'
})
データを更新
curl
curl $base/users/1.json -X PATCH -d '{"出身地":"沖ノ鳥島"}'
JavaScript
await fetch(base+'/users/2.json', {
method: 'PATCH',
body: '{"出身地":"弁天島"}'
})
Google Apps Script
UrlFetchApp.fetch(base+'/users/3.json', {
method: 'PATCH',
payload: '{"出身地":"ハワイ"}'
})
データを削除
curl
curl $base/users/1.json -X DELETE
JavaScript
await fetch(base+'/users/2.json', {method: 'DELETE'})
Google Apps Script
UrlFetchApp.fetch(base+'/users/3.json', {method: 'DELETE'})
キャッシュ
curl
curl -i $base/users.json -H 'X-Firebase-ETag: true'
JavaScript
await fetch(base+'/users.json', {
headers: {'X-Firebase-ETag': true}
}).then(r => r.json())
Google Apps Script
JSON.parse(UrlFetchApp.fetch(base+'/users.json', {
headers: {'X-Firebase-ETag': true}
}))
上書き防止
curl
curl $base/users.json -H 'X-Firebase-ETag: true' -H 'if-match: u/abcdZ64BrbTEOhyb2V5TWQM2o=' -iX PUT -d '{"名前":"山田太郎","出身地":"石垣島"}'
上記ETag: u/nNaTZ64BrbTEOhyb2V5TWQM2o=
と異なるため上書きできない。データのコンフリクトを回避できる
JavaScript
await fetch(base+'/users.json', {
method: 'PUT',
headers: {'if-match': 'u/abcdZ64BrbTEOhyb2V5TWQM2o='},
body: '{"名前":"山田花子","出身地":"択捉島"}'
})
Google Apps Script
UrlFetchApp.fetch(base+'/users.json', {
method: 'PUT',
headers: {'if-match': 'u/abcdZ64BrbTEOhyb2V5TWQM2o='},
payload: '{"名前":"JohnDoe","出身地":"カナダ"}'
})
クエリパラメータ
プリティープリント
プリティー
curl $base/.json?print=pretty
Not プリティー
curl $base/.json
一階層目のみ取得(Not再帰的)
curl $base/.json?shallow=true
JSONP
<script>
function gotData(data) {
console.log(data);
}
</script>
<script src="https://osaka5-default-rtdb.asia-southeast1.firebasedatabase.app/.json?callback=gotData"></script>
Download
https://osaka5-default-rtdb.asia-southeast1.firebasedatabase.app/.json?download=db.json
Content-Disposition
が付与され、ダウンロードできます
Playground
Access-Control-Allow-Origin: *
のため、どこからでもAPIを実行可能です
F12を押してQiita上やTampermonkeyでも実行できます。
See the Pen Firebase Realtime Database by John Doe (@04) on CodePen.
引用