├── .env.sample ├── .gitignore ├── README.md ├── controllers └── user.controllers.js ├── db └── userData.json ├── package.json ├── routes └── user.js └── server.js /.env.sample: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/md-rejoyan-islam/REST-API-structure/acd697a1f0eebe796f81703c5718e6187877a230/.env.sample -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | .env 3 | /package-lock.json 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## REST API STRUCTURE 2 | 3 | ![Folder Structure Image](https://drive.google.com/uc?id=13RapRNcLDsYGgsYA0dEW5serpsBsyXU6 "Folder Structure Photo") 4 | 5 | 6 | ### Packages 7 | * Express JS 8 | * Dotenv 9 | * Nodemon 10 | 11 | ### Package Install 12 | ```console 13 | $ npm i express dotenv nodemon 14 | ``` 15 | 16 | 17 | 18 | ### Server Structure 19 | ```js 20 | const express=require('express') 21 | const dotenv= require('dotenv').config() 22 | const port =process.env.PORT || 5005 23 | const app=express() 24 | 25 | app.use(express.json()) 26 | app.use(urlencoded({extended:false})) 27 | 28 | app.get('/',(req,res)=>{ 29 | res.send('API') 30 | }) 31 | 32 | 33 | app.listen(port,()=>{ 34 | console.log(`server is running on http://localhost:${port}`); 35 | }) 36 | ``` 37 | 38 | ### Social Media Link 39 | * [LinkedIn](https://www.linkedin.com/in/rej0yanislam/)
40 | * [Twitter](https://twitter.com/rej0yanislam) 41 | 42 | -------------------------------------------------------------------------------- /controllers/user.controllers.js: -------------------------------------------------------------------------------- 1 | const {readFileSync,writeFileSync}=require('fs'); 2 | const { join } = require('path'); 3 | const path = require('path') 4 | 5 | 6 | const data = JSON.parse( 7 | readFileSync(path.join(__dirname, "../db/userData.json")) 8 | ); 9 | console.log(data); 10 | 11 | /** 12 | * @desc get all users data 13 | * @name GET /api/v1/user 14 | * @access public 15 | */ 16 | const getAllUsers=(req,res)=>{ 17 | res.send('hello user') 18 | } 19 | /** 20 | * @desc get single user data 21 | * @name GET /api/v1/user 22 | * @access public 23 | */ 24 | const getSingleUser=(req,res)=>{ 25 | const data=req.params 26 | res.send(data) 27 | } 28 | 29 | /** 30 | * @desc create a new user 31 | * @name GET /api/v1/user 32 | * @access public 33 | */ 34 | const createUser=(req,res)=>{ 35 | 36 | const data = JSON.parse( 37 | readFileSync(path.join(__dirname, "../db/userData.json")) 38 | ); 39 | console.log(data); 40 | const dataa=req.body; 41 | data.push(dataa) 42 | writeFileSync(path.join(__dirname,'../db/userData.json'),JSON.stringify(data)) 43 | console.log(data); 44 | res.send(data) 45 | } 46 | 47 | 48 | //export controllers 49 | module.exports={ 50 | getAllUsers,createUser,getSingleUser 51 | } -------------------------------------------------------------------------------- /db/userData.json: -------------------------------------------------------------------------------- 1 | [{"name":"joy","age":23},{"name":"er"},{"name":"er"},{"name":"errtey"},{"name":"errteyuyjujy"},{"namehtd":"errteyuyjujy"}] -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api-recap", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "server.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "nodemon server.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "dotenv": "^16.0.3", 15 | "express": "^4.18.2", 16 | "nodemon": "^2.0.20" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /routes/user.js: -------------------------------------------------------------------------------- 1 | // init express 2 | const express = require("express"); 3 | 4 | const {getAllUsers,createUser,getSingleUser}=require('../controllers/user.controllers') 5 | 6 | // create router 7 | const router = express.Router(); 8 | 9 | // get route 10 | router.get("/", getAllUsers); 11 | 12 | //get single user 13 | router.post("/:id/:skill", getSingleUser); 14 | 15 | //create user 16 | router.post("/", createUser); 17 | 18 | // export router 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express=require('express') 2 | const dotenv= require('dotenv').config() 3 | 4 | const app=express() 5 | const userRouter= require('./routes/user') 6 | 7 | // init environment variable 8 | const port = process.env.PORT || 5005; 9 | 10 | //express middleware 11 | app.use(express.json()) 12 | app.use(express.urlencoded({extended:false})) 13 | 14 | app.use('/api/v1/user',userRouter) 15 | 16 | 17 | app.listen(port,()=>{ 18 | console.log(`server is running on http://localhost:${port}`); 19 | }) --------------------------------------------------------------------------------