nss-json-server v1.1.0
🔐 NSS JSON Server
This package will pull in useful mixins created by us and other developers. Documentation and options are simplified for instruction of beginners.
Mixins:
- JWT authentication middleware for JSON Server published by Jeremy Bensimon at Json Server with Auth
 
Getting started
Package Install
# NPM
npm i -g nss-json-server
# Yarn
yarn global add nss-json-serverCreate a db.json file with a users collection :
{
  "users": []
}Alias Setup
Open your bash or zsh initialization file and add the following alias.
alias js="nss-json-server -X 7h -p 5050 -w"Running your API
Run with following command:
js db.jsonIt exposes and works the same for all JSON Server flags.
Authentication flow 🔑
JSON Server Auth adds a simple JWT based authentication flow.
Register 👥
POST /register
email and password are required in the request body :
POST /register
{
  "email": "admina@gmail.com",
  "password": "bestPassw0rd"
}The response contains the JWT access token, user id and username (if exists):
201 Created
{
  "accessToken": "xxx.xxx.xxx",
  "user": {
    "id": 1,
    "username": "xxxxxxxx"
  }
}Any other property can be added to the request body without being validated:
POST /register
{
  "email": "admina@gmail.com",
  "password": "bestPassw0rd",
  "username": "admina",
  "firstname": "Admina",
  "lastname": "Straytor",
  "age": 32
}Login 🛂
POST /login
email and password are required:
POST /login
{
  "email": "admina@gmail.com",
  "password": "bestPassw0rd"
}The response contains the JWT access token:
200 OK
{
  "accessToken": "xxx.xxx.xxx",
  "user": {
    "id": 1,
    "username": "xxxxxxxx"
  }
}Creating Owned Resources
If any resource has been guarded with an ownership level route:
| Permission | Description | 
|---|---|
| 600 | User must own the resource to write or read the resource. | 
| 640 | User must own the resource to write the resource. User must be logged to read the resource. | 
| 644 | User must own the resource to write the resource. Everyone can read the resource. | 
Then when you make a request with the POST or PUT method, and there is an authorization header, then the userId will be automatically added to the request body.
Example
fetch("http://localhost:5050/posts", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Accept: "application/json",
        Authorization: "Bearer xxxxxx.xx.xxxxx"
    },
    body: JSON.stringify({
        url: "https://media.giphy.com/media/eHWWKfSp0VZ1V87Ixj/giphy.gif",
        image: null,
        timestamp: Date.now()
    })
})Example response:
{
  "url": "https://media.giphy.com/media/eHWWKfSp0VZ1V87Ixj/giphy.gif",
  "image": null,
  "timestamp": 1575211182251,
  "userId": 4,
  "id": 8
}For Local Development
- Clone repo
 npm i- Create a 
routes.jsonanddb.json - Add the following to your 
routes.json 
Sample routes.json
{
    "/users*": "/640/users$1",
    "/posts*": "/640/posts$1"
}Starting the Dev Server
npm run buildnode dist/bin.js -w db.json -p 5050 -X 7h -r routes.json
Basic Requests
Using Postman, or your favorite HTTP request client, create the following requests.
- http://localhost:5050/register
// Body (raw JSON) { "email": "admina@gmail.com", "password": "Admin8*", "name": "Admina Straytor", "username": "admin", "location": "Nashville, TN", "avatar": "" }- Method - 
POST - Content-Type header - 
application/json 
 - Method - 
 - http://localhost:5050/posts
// Body (raw JSON) { "url": "https://media.giphy.com/media/eHWWKfSp0VZ1V87Ixj/giphy.gif", "image": null, "timestamp": 1575211182251 }- Method - 
POST - Authorization header - Use token from registration response
 - Content-Type header - 
application/json - Accept header - 
application/json 
 - Method -