1.0.2 • Published 8 months ago

northwind-rest-api v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

northwind-rest-api

A local REST API for Northwind database, containing products, employees, suppliers, categories, authentication and more.

Installation:

npm i -g northwind-rest-api

(You must install it globally using the -g flag so the backend could be started via command-line.)

CLI Commands:

  • Run the REST API:
northwind  
  • Display help:
northwind --help 
  • Display version:
northwind --version

Existing Users:

  1. Admin User:
  • Email: lisa@gmail.com
  • Password: 123456
  1. Regular User:
  • Email: bart@gmail.com
  • Password: 123456

Endpoints:

Products:

  • GET http://localhost:3030/api/products Get all products.
  • GET http://localhost:3030/api/products/7 Get product with id 7.
  • POST http://localhost:3030/api/products Add a new product.
  • PUT http://localhost:3030/api/products/7 Update product with id 7.
  • DELETE http://localhost:3030/api/products/7 Delete product with id 7.
  • GET http://localhost:3030/api/products/images/01a5a6d5-6cc4-4e72-8f5d-e44efd3bc3d7.jpg Get that product's image.
  • GET http://localhost:3030/api/products/top-three Get top three products (must be logged-in).
  • GET http://localhost:3030/api/products/out-of-stock Get out-of-stock products (must be admin).

Employees:

  • GET http://localhost:3030/api/employees Get all employees.
  • GET http://localhost:3030/api/employees/7 Get employee with id 7.
  • POST http://localhost:3030/api/employees Add a new employee.
  • PUT http://localhost:3030/api/employees/7 Update employee with id 7.
  • DELETE http://localhost:3030/api/employees/7 Delete employee with id 7.
  • GET http://localhost:3030/api/employees/images/01a5f7d1-42e8-4f71-83c4-58e86751b272.jpg Get that employee's image.

Suppliers:

  • GET http://localhost:3030/api/suppliers Get all suppliers.
  • GET http://localhost:3030/api/suppliers/7 Get supplier with id 7.
  • POST http://localhost:3030/api/suppliers Add a new supplier.
  • PUT http://localhost:3030/api/suppliers/7 Update supplier with id 7.
  • DELETE http://localhost:3030/api/suppliers/7 Delete supplier with id 7.
  • GET http://localhost:3030/api/suppliers/images/01a57fe7-0f02-45e3-968b-65264020dd46.jpg Get that supplier's image.

Categories:

  • GET http://localhost:3030/api/categories Get all categories (must be logged-in).
  • GET http://localhost:3030/api/categories/7 Get category with id 7 (must be logged-in).
  • POST http://localhost:3030/api/categories Add a new category (must be logged-in).
  • PUT http://localhost:3030/api/categories/7 Update category with id 7 (must be logged-in).
  • DELETE http://localhost:3030/api/categories/7 Delete category with id 7 (must be admin).
  • GET http://localhost:3030/api/categories/images/01a1f85a-335e-4797-82b4-4c53d3aacb73.jpg Get that category's image.

Contact Us:

  • POST http://localhost:3030/api/contact-us Add a new contact-us message.
  • GET http://localhost:3030/api/contact-us Get all contact-us messages (must be admin).

Auth:

  • POST http://localhost:3030/api/register Register as a new user.
  • POST http://localhost:3030/api/login Login as an existing user.
  • POST http://localhost:3030/api/refresh-token Get back a new token (must be logged-in).

Slow Server Simulation:

For simulating a slow server you can precede each endpoint (besides image endpoints) with the word "delay". This will cause a 3 seconds delay for that route. This can help test how your frontend behaves when performing an http request to a slow server.

Examples:

  • GET http://localhost:3030/api/products Gets all products without any delay.
  • GET http://localhost:3030/delay/api/products Gets all products after a 3 seconds delay.
  • GET http://localhost:3030/api/employees/7 Gets employee with id 7 without any delay.
  • GET http://localhost:3030/delay/api/employees/7 Gets employee with id 7 after a 3 seconds delay.
  • POST http://localhost:3030/api/suppliers Adds a new supplier without any delay.
  • POST http://localhost:3030/delay/api/suppliers Adds a new supplier after a 3 seconds delay.

Entities:

User:

PropertyDescription
idUser's ID
firstNameUser's first name
lastNameUser's last name
emailUser's email
passwordUser's password
roleUser's role

Product:

PropertyDescription
idProduct's ID
nameProduct's name
priceProduct's price
stockAvailable stock of the product
imageUrlURL of the product's image

Employee:

PropertyDescription
idEmployee's ID
firstNameEmployee's first name
lastNameEmployee's last name
titleEmployee's job title
countryEmployee's country
cityEmployee's city
birthDateEmployee's birth date
imageUrlURL of the employee's image

Supplier:

PropertyDescription
idSupplier's ID
companySupplier's company name
countrySupplier's country
citySupplier's city
addressSupplier's address
phoneSupplier's phone number
imageUrlURL of the supplier's image

Category:

PropertyDescription
idCategory's ID
nameCategory's name
descriptionDescription of the category
imageUrlURL of the category's image

Contact Us Message:

PropertyDescription
idContact's ID
nameContact's name
emailContact's email address
phoneContact's phone number
messageContact's message