mirror of
https://github.com/Raghu-Ch/ProductsAPI.git
synced 2026-02-10 04:43:02 -05:00
First commit
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
node_modules/
|
||||
6
README.md
Normal file
6
README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
#ProductsAPI
|
||||
|
||||
ProductsAPI is an RestFull API base for my projects.
|
||||
|
||||
##Prerequisites
|
||||
*NodeJs, ExpressJs, Gulp and MongoDB.*
|
||||
84
Routes/productRoutes.js
Normal file
84
Routes/productRoutes.js
Normal file
@@ -0,0 +1,84 @@
|
||||
var express = require('express');
|
||||
|
||||
var routes = function (Product) {
|
||||
var productRouter = express.Router();
|
||||
|
||||
productRouter.route('/Products')
|
||||
.post(function (req, res) {
|
||||
var product = new Product(req.body);
|
||||
product.save();
|
||||
res.status(201).send(product);
|
||||
})
|
||||
.get(function (req, res) {
|
||||
Product.find(function (err, products) {
|
||||
if (err) res.status(500).send(err);
|
||||
else res.json(products);
|
||||
});
|
||||
});
|
||||
// Middleware
|
||||
productRouter.use('/Products/:productId', function (req, res, next) {
|
||||
Product.findById(req.params.productId, function (err, product) {
|
||||
if (err) res.status(500).send(err);
|
||||
else if (product) {
|
||||
req.product = product;
|
||||
next();
|
||||
} else {
|
||||
res.status(404).send('product not found!!');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
productRouter.route('/Products/:productId')
|
||||
.get(function (req, res) {
|
||||
res.json(req.product);
|
||||
})
|
||||
.put(function (req, res) {
|
||||
req.product.productName = req.body.productName;
|
||||
req.product.productCode = req.body.productCode;
|
||||
req.product.category = req.body.category;
|
||||
req.product.brand = req.body.brand;
|
||||
req.product.sku = req.body.sku;
|
||||
req.product.resolution = req.body.resolution;
|
||||
req.product.type = req.body.type;
|
||||
req.product.technology = req.body.technology;
|
||||
req.product.series = req.body.series;
|
||||
req.product.description = req.body.description;
|
||||
req.product.price = req.body.price;
|
||||
req.product.discount = req.body.discount;
|
||||
req.product.imageUrl = req.body.imageUrl;
|
||||
req.product.save(function (err) {
|
||||
if (err)
|
||||
res.status(500).send(err);
|
||||
else {
|
||||
res.json(req.product);
|
||||
}
|
||||
});
|
||||
})
|
||||
.patch(function (req, res) {
|
||||
if (req.body._id) {
|
||||
delete req.body._id;
|
||||
}
|
||||
for (var key in req.body) {
|
||||
req.product[key] = req.body[key];
|
||||
}
|
||||
req.product.save(function (err) {
|
||||
if (err)
|
||||
res.status(500).send(err);
|
||||
else {
|
||||
res.json(req.product);
|
||||
}
|
||||
});
|
||||
})
|
||||
.delete(function (req, res) {
|
||||
req.product.remove(function (err) {
|
||||
if (err)
|
||||
res.status(500).send(err);
|
||||
else {
|
||||
res.status(204).send('REMOVED PRODUCT');
|
||||
}
|
||||
});
|
||||
});
|
||||
return productRouter;
|
||||
};
|
||||
|
||||
module.exports = routes;
|
||||
16
gulpfile.js
Normal file
16
gulpfile.js
Normal file
@@ -0,0 +1,16 @@
|
||||
var gulp = require('gulp');
|
||||
var nodemon = require('gulp-nodemon');
|
||||
|
||||
gulp.task('default', function () {
|
||||
nodemon({
|
||||
script: 'server.js',
|
||||
ext: 'js',
|
||||
env: {
|
||||
PORT: 8000
|
||||
},
|
||||
ignore: ['./node_modules/**']
|
||||
})
|
||||
.on('restart', function () {
|
||||
console.log('Restarting..');
|
||||
});
|
||||
});
|
||||
20
models/productModel.js
Normal file
20
models/productModel.js
Normal file
@@ -0,0 +1,20 @@
|
||||
var mongoose = require('mongoose');
|
||||
var Schema = mongoose.Schema;
|
||||
|
||||
var productModel = new Schema({
|
||||
productName: String,
|
||||
productCode: String,
|
||||
category: String,
|
||||
brand: String,
|
||||
sku: String,
|
||||
resolution: String,
|
||||
type: String,
|
||||
technology: String,
|
||||
series: String,
|
||||
description: String,
|
||||
price: Number,
|
||||
discount: String,
|
||||
imageUrl: String
|
||||
});
|
||||
|
||||
module.exports = mongoose.model('Product', productModel);
|
||||
3872
package-lock.json
generated
Normal file
3872
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
22
package.json
Normal file
22
package.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "productsapi",
|
||||
"version": "1.0.0",
|
||||
"description": "Node + Express + MongoDB API",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [
|
||||
"RestAPI",
|
||||
"MEAN"
|
||||
],
|
||||
"author": "Raghu-ch",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.18.3",
|
||||
"express": "^4.16.3",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-nodemon": "^2.2.1",
|
||||
"mongoose": "^5.1.3"
|
||||
}
|
||||
}
|
||||
32
server.js
Normal file
32
server.js
Normal file
@@ -0,0 +1,32 @@
|
||||
var express = require('express');
|
||||
var mongoose = require('mongoose');
|
||||
var bodyParser = require('body-parser');
|
||||
var db = mongoose.connect('mongodb://Alien:SafePass7@ds141320.mlab.com:41320/rapidcrocs');
|
||||
|
||||
var Product = require('./models/productModel');
|
||||
var app = express();
|
||||
|
||||
app.use(function (req, res, next) {
|
||||
res.header("Access-Control-Allow-Origin", "*");
|
||||
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||
next();
|
||||
});
|
||||
|
||||
var port = process.env.PORT || 3000;
|
||||
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
app.use(bodyParser.json());
|
||||
|
||||
productRouter = require('./Routes/productRoutes')(Product);
|
||||
|
||||
app.use('/api', productRouter);
|
||||
|
||||
app.get('/', function (req, res) {
|
||||
res.send('Welcome to my API! MAGIC HAPPENS HERE!!');
|
||||
});
|
||||
|
||||
app.listen(port, function () {
|
||||
console.log('Gulp is running on PORT:' + port);
|
||||
});
|
||||
Reference in New Issue
Block a user