/node-firebase-api

Good starting point for building RESTful API as Firebase Functions. Has CRUD endpoints that write to Firestore backend.

Primary LanguageJavaScript

Node Firebase API

Install

  1. Clone this repository

  2. Run npm or yarn

  3. Create a service account JSON file from the Firebase console. By default save it as /functions/service-account.json.

  4. You need to have firebase-tools installed npm i -g firebase-tools@8.4.1 (8.4.2 has problems)

  5. Run firebase init and select Functions and Emulators. Install the Function emulator.

Getting Started

  1. Launch locally using firebase serve

  2. Deploy using firebase deploy

Endpoints

A "collection" is any object collection (e.g. Users, Projects, etc.). The term collection is taken from Firestore terminology.

Get all items in a collection

GET /:collection

Get a collection item by ID

GET /:collection/:collectionId

Create a collection item

By default, there is no schema defined or required. The object can contain any valid JSON.

POST /:collection
Content-Type: application/json

{
   "name": "Something"
}

Update a collection item

PUT /:collection/:collectionId
Content-Type: application/json

{
   "archive": true
}

Delete a collection item

DELETE /:collection/:collectionId

Examples

Request

GET {{baseUrl}}/projects
Accept: application/json
Cache-Control: no-cache

Response

[
  {
    "id": "lpstt3v",
    "category": "34 Fame",
    "name": "Documentation Site",
    "icon": "fas fa-book",
    "status": "On-Hold"
  }
]

Request

POST {{baseUrl}}/projects
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache

{
   "category": "34 Fame",
   "name": "Documentation Site",
   "icon": "fas fa-book",
   "status": "On-Hold"
}

Response

{
  "id": "lpstt3v",
  "category": "34 Fame",
  "name": "Documentation Site",
  "icon": "fas fa-book",
  "status": "On-Hold"
}

Request

PUT {{baseUrl}}/projects/lpstt3v
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache

{
   "status": "Open"
}

Response

{
  "id": "lpstt3v",
  "category": "34 Fame",
  "name": "Documentation Site",
  "icon": "fas fa-book",
  "status": "Open"
}

DELETE {{baseUrl}}/projects/lpstt3v
Accept: */*
Cache-Control: no-cache