firebase-rest
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

Firebase REST Client for Node 🔥

Build Status npm version Dependencies

  • We make requests with the HTTP Fetch API via node-fetch
  • You can bring your own Promise library by calling FirebaseREST.setPromise(Promise)

Installation

npm install firebase-rest --save

Usage

// Don't forget `.default` at the end! (We use ES6 modules from the future.)
const FirebaseREST = require('firebase-rest').default;

Instantiate a either the FirebaseREST.JSONClient or the FirebaseREST.Client, and start making calls. What's the difference?

  • JSONClient promises an HTTP fetch response where the #body is parsed JSON
  • Client promises a raw HTTP fetch response according to the standard

Confused yet? This #get example should make the difference clear:

var standardClient =
  new FirebaseREST.Client('https://app.firebaseio.com', { auth: 'SECRET' });
var jsonClient =
  new FirebaseREST.JSONClient('https://app.firebaseio.com', { auth: 'SECRET' });
 
standardClient.get('/')
  .then(res => res.json())
  .then(json => /* do something with the json */)
 
jsonClient.get('/')
  .then(res => /* do something with the res.body */)

If you're still confused, see "Client vs JSONClient" below for a deep dive.

You make the following requests with either client:

// Reading data (GET)
client.get('/path');
client.get('/path', additionalQueryParams);
 
// Writing data (PUT)
client.put('/path', payload);
client.put('/path', payload, additionalQueryParams);
 
// Updating data (PATCH)
client.patch('/path', payload);
client.patch('/path', payload, additionalQueryParams);
 
// Pushing data (POST)
client.post('/path', payload);
client.post('/path', payload, additionalQueryParams);
 
// Removing data (DELETE)
client.delete('/path');
client.delete('/path', additionalQueryParams);
  • additionalQueryParams: Additional URL params to merge with the default params provided (e.g. { orderBy: '$value', limitToFirst: 2 }, { shallow: true }.)
  • '/path': Path to a part your DB, no / required.
  • payload: Object to write to Firebase

FirebaseREST also provides aliases to match the semantics of the official Firebase JavaScript library:

client.set === client.put;       // =>  true
client.update === client.patch;  // =>  true
client.push === client.post;     // =>  true
client.remove === client.delete; // =>  true

Client vs JSONClient

You can see the differences when comparing two GET requests. TLDR, you probably want to use JSONClient: it's supremely convenient.

//
// Standard Client
//
 
var responsePromise = client.get('/').then(res).then(console.log)
// => Body {
//   url: 'https://app.firebaseio.com/.json?auth=SECRET',
//   status: 200,
//   statusText: 'OK',
//   headers: Headers { ... },
//   ok: true,
//   body: PassThrough { ... },
//   ... }
responsePromise.then(res => res.json()).then(console.log)
// => { db: 'contents' }
 
//
// JSON Client
//
 
jsonClient.get('/').then(console.log)
// =>
// JSONResponse {
//   url: 'https://app.firebaseio.com/.json?auth=SECRET',
//   status: 200,
//   statusText: 'OK',
//   headers: Headers { ... },
//   ok: true
//   body:
//    { db: 'contents' }

More Documentation and Examples

See the source and the specs. There be hidden treasure.

Readme

Keywords

Package Sidebar

Install

npm i firebase-rest

Weekly Downloads

9

Version

1.0.0

License

MIT

Last publish

Collaborators

  • fny