Coder Social home page Coder Social logo

yildizaydogan / fake-store-api Goto Github PK

View Code? Open in Web Editor NEW

This project forked from keikaavousi/fake-store-api

0.0 0.0 0.0 62.9 MB

FakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data

Home Page: https://fakestoreapi.com

License: MIT License

Shell 0.19% JavaScript 24.33% Dockerfile 0.13% EJS 52.45% SCSS 22.89%

fake-store-api's Introduction

FakeStoreAPI

FakeStoreAPI is a free online REST API that you can use whenever you need Pseudo-real data for your e-commerce or shopping website without running any server-side code. It's awesome for teaching purposes, sample codes, tests and etc.

You can visit in detail docs in FakeStoreAPI for more information.

Why?

When I wanted to design a shopping website prototype and needed fake data, I had to use lorem ipsum data or create a JSON file from the base. I didn't find any online free web service to return semi-real shop data instead of lorem ipsum data. so I decided to create this simple web service with NodeJs(express) and MongoDB as a database.

Resources

There are 4 main resources need in shopping prototypes:

New! "Rating" (includes rate and count) has been added to each product object!

How to

you can fetch data with any kind of methods you know(fetch API, Axios, jquery ajax,...)

Get all products

fetch("https://fakestoreapi.com/products")
  .then((res) => res.json())
  .then((json) => console.log(json));

Get a single product

fetch("https://fakestoreapi.com/products/1")
  .then((res) => res.json())
  .then((json) => console.log(json));

Add new product

fetch("https://fakestoreapi.com/products", {
  method: "POST",
  body: JSON.stringify({
    title: "test product",
    price: 13.5,
    description: "lorem ipsum set",
    image: "https://i.pravatar.cc",
    category: "electronic",
  }),
})
  .then((res) => res.json())
  .then((json) => console.log(json));

/* will return
{
 id:31,
 title:'...',
 price:'...',
 category:'...',
 description:'...',
 image:'...'
}
*/

Note: Posted data will not really insert into the database and just return a fake id.

Updating a product

fetch("https://fakestoreapi.com/products/7", {
  method: "PUT",
  body: JSON.stringify({
    title: "test product",
    price: 13.5,
    description: "lorem ipsum set",
    image: "https://i.pravatar.cc",
    category: "electronic",
  }),
})
  .then((res) => res.json())
  .then((json) => console.log(json));

/* will return
{
    id:7,
    title: 'test product',
    price: 13.5,
    description: 'lorem ipsum set',
    image: 'https://i.pravatar.cc',
    category: 'electronic'
}
*/
fetch("https://fakestoreapi.com/products/8", {
  method: "PATCH",
  body: JSON.stringify({
    title: "test product",
    price: 13.5,
    description: "lorem ipsum set",
    image: "https://i.pravatar.cc",
    category: "electronic",
  }),
})
  .then((res) => res.json())
  .then((json) => console.log(json));

/* will return
{
    id:8,
    title: 'test product',
    price: 13.5,
    description: 'lorem ipsum set',
    image: 'https://i.pravatar.cc',
    category: 'electronic'
}
*/

Note: Edited data will not really be updated into the database.

Deleting a product

fetch("https://fakestoreapi.com/products/8", {
  method: "DELETE",
});

Nothing will delete on the database.

Sort and Limit

You can use query string to limit results or sort by asc|desc

// Will return all the posts that belong to the first user
fetch("https://fakestoreapi.com/products?limit=3&sort=desc")
  .then((res) => res.json())
  .then((json) => console.log(json));

All available routes

Products

fields:
{
    id:Number,
    title:String,
    price:Number,
    category:String,
    description:String,
    image:String
}

GET:

  • /products (get all products)
  • /products/1 (get specific product based on id)
  • /products?limit=5 (limit return results )
  • /products?sort=desc (asc|desc get products in ascending or descending orders (default to asc))
  • /products/products/categories (get all categories)
  • /products/category/jewelery (get all products in specific category)
  • /products/category/jewelery?sort=desc (asc|desc get products in ascending or descending orders (default to asc))

POST:

  • /products

-PUT,PATCH

  • /products/1

-DELETE

  • /products/1

Carts

fields:
{
    id:Number,
    userId:Number,
    date:Date,
    products:[{productId:Number,quantity:Number}]
}

GET:

  • /carts (get all carts)
  • /carts/1 (get specific cart based on id)
  • /carts?startdate=2020-10-03&enddate=2020-12-12 (get carts in date range)
  • /carts/user/1 (get a user cart)
  • /carts/user/1?startdate=2020-10-03&enddate=2020-12-12 (get user carts in date range)
  • /carts?limit=5 (limit return results )
  • /carts?sort=desc (asc|desc get carts in ascending or descending orders (default to asc))

POST:

  • /carts

PUT,PATCH:

  • /carts/1

DELETE:

  • /carts/1

Users

fields:
{
    id:20,
    email:String,
    username:String,
    password:String,
    name:{
        firstname:String,
        lastname:String
        },
    address:{
    city:String,
    street:String,
    number:Number,
    zipcode:String,
    geolocation:{
        lat:String,
        long:String
        }
    },
    phone:String
}

GET:

  • /users (get all users)
  • /users/1 (get specific user based on id)
  • /users?limit=5 (limit return results )
  • /users?sort=desc (asc|desc get users in ascending or descending orders (default to asc))

POST:

  • /users

PUT,PATCH:

  • /users/1

DELETE:

  • /users/1

Auth

fields:
{
    username:String,
    password:String
}

POST:

  • /auth/login

ToDo

  • Add graphql support
  • Add pagination
  • Add another language support

fake-store-api's People

Contributors

bardiesel avatar csralvall avatar freakingeek avatar jacob-ebey avatar keikaavousi avatar ld-web avatar marvinjgh avatar mkeikaavousi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.