Skip to content

JoeSteve90/Blog-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blog App

This is an api for a pizza app


Requirements

  1. User should be able to register
  2. User should be able to login with Passport using JWT
  3. Implement basic auth
  4. User should be able to get posts
  5. Users should be able to create posts
  6. Users should be able to update and delete posts
  7. Test application

Setup

  • Install NodeJS, mongodb
  • pull this repo
  • update env with example.env
  • run npm run start:dev

Base URL

  • somehostsite.com

Models

  • Category
  • Posts
  • Users

User

field data_type constraints
id string required
username string required
firstname string optional
lastname string optional
email string optional
password string required
user_type string required, default: user, enum: ['user', 'admin']

posts

field data_type constraints
id string required
created_at date required
state number required,default:1
total_price number required
items array required
item.name string required
item.price number required
item.size string required, enum: ['m', 's', 'l']
item.quantity number required, enum: ['m', 's', 'l']

APIs


Signup User

  • Route: /signup
  • Method: POST
  • Body:
{
  "email": "doe@example.com",
  "password": "Password1",
  "firstname": "jon",
  "lastname": "doe",
  "username": 'jon_doe",
}
  • Responses

Success

{
    message: 'Signup successful',
    user: {
        "email": "doe@example.com",
        "password": "Password1",
        "firstname": "jon",
        "lastname": "doe",
        "username": 'jon_doe",
    }
}

Login User

  • Route: /login
  • Method: POST
  • Body:
{
  "password": "Password1",
  "username": 'jon_doe",
}
  • Responses

Success

{
    message: 'Login successful',
    token: 'sjlkafjkldsfjsd'
}

Create Posts

  • Route: /orders
  • Method: POST
  • Header
    • Authorization: Bearer {token}
  • Body:
{
    items: [{ name: 'chicken pizza', price: 900, size: 'm', quantity: 1}]
}
  • Responses

Success

{
    state: 1,
    total_price: 900,
    created_at: Mon Oct 31 2022 08:35:00 GMT+0100,
    items: [{ name: 'chicken pizza', price: 900, size: 'm', quantity: 1}]
}

Get Post

  • Route: /orders/:id
  • Method: GET
  • Header
    • Authorization: Bearer {token}
  • Responses

Success

{
    state: 1,
    ,
    created_at: Mon Oct 31 2022 08:35:00 GMT+0100,
    items: [{ name: 'chicken pizza', price: 900, size: 'm', quantity: 1}]
}

Get Orders

  • Route: /orders
  • Method: GET
  • Header:
    • Authorization: Bearer {token}
  • Query params:
    • page (default: 1)
    • per_page (default: 10)
    • order_by (default: created_at)
    • order (options: asc | desc, default: desc)
    • state
    • created_at
  • Responses

Success

{
    state: 1,
  
    created_at: Mon Oct 31 2022 08:35:00 GMT+0100,
    items: [{ name: '', price: 900, size: 'm', quantity: 1}]
}

...

Contributor

  • OJO Stephen

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published