Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ A starter repo for the ACA Advanced `My First Web Server` project.


## Part 1.
* Give your server the ability to respond to a GET request with a path "/users" and return the users array from state.js
* Give your server the ability to respond to a GET request with a path "/users/1" and return the first user object from the users array from state.js
* Give your server the ability to respond to a POST request with a path "/users" and just add a hard coded user object to the users array from state.js. .json() the last user in the array to send it back to the client. (if you do another GET request you should see this added)
* Give your server the ability to respond to a PUT request with a path "/users/1" and just change any key value on the first user object in the users array in state.js. .json() this user to send it back to the client.
* Give your server the ability to respond to a DELETE request with a path "/users/1" and remove one item from the users array. send() back a messsage "deleted"
*** 1) Give your server the ability to respond to a GET request with a path "/users" and return the users array from state.js
*** 2) Give your server the ability to respond to a GET request with a path "/users/1" and return the first user object from the users array from state.js
*** 3) Give your server the ability to respond to a POST request with a path "/users" and just add a hard coded user object to the users array from state.js. .json() the last user in the array to send it back to the client. (if you do another GET request you should see this added)
* 4) Give your server the ability to respond to a PUT request with a path "/users/1" and just change any key value on the first user object in the users array in state.js. .json() this user to send it back to the client.
* 5) Give your server the ability to respond to a DELETE request with a path "/users/1" and remove one item from the users array. send() back a messsage "deleted"


## Part 2. Body
* Give your server the ability to handle a POST request with a path "/users" and add the body from the client to the users array
* Assign an _id property to the user object that is a number that increments by 1 each time.
* Send the newly created user object back to the client
* 6) Give your server the ability to handle a POST request with a path "/users" and add the body from the client to the users array
*** 7) Assign an _id property to the user object that is a number that increments by 1 each time.
* 8) Send the newly created user object back to the client

## Part 3. Use path variables
* Give your server the ability to respond to a GET request with a path `/users/:userId` and return the user object from the users array that has the _id == userId
* Give your server the ability to respond to a PUT request with a path `/users/:userId` and just change any key value on the user object with this _id
* Give your server the ability to respond to a DELETE request with a path `/users/:userId` and find the user with this id from the array. give this user object a new key value isActive:false. send() back a messsage "deleted"
*** 9) Give your server the ability to respond to a GET request with a path `/users/:userId` and return the user object from the users array that has the _id == userId
* 10) Give your server the ability to respond to a PUT request with a path `/users/:userId` and just change any key value on the user object with this _id
* 11) Give your server the ability to respond to a DELETE request with a path `/users/:userId` and find the user with this id from the array. give this user object a new key value isActive:false. send() back a messsage "deleted"
91 changes: 91 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1 +1,92 @@
//my ip 192.168.36.87.
//192.168.1.146.
var http = require('http');
let users = require("./state").users;
let products = require("./state").products;
let server = http.createServer(messageReceived);
server.listen(8080);


function messageReceived(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
//1
if(req.method === "GET" && req.url === "/users"){
getUsers(req, res);
}
//2
else if(req.method === "GET" && req.url.indexOf("/users/") > -1){
let id = req.url.split("/");
let user = users.find(p=>p["_id"] == id[2]);
//9
if(!user){
let userId = id[2].split('');
if(userId[0] == ':'){
let specificUser = users.find(p=>p["_id"] == userId[1]);
let specificUserJSON = JSON.stringify(specificUser);
res.write(specificUserJSON);
}
}else {
let usersJSON = JSON.stringify(user);
res.write(usersJSON);
}
}
//3
else if(req.method === "POST" && req.url === "/users"){
let body = [];
req.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
let user = JSON.parse(body);
//7
user._id = users.length + 1;
users.push(user);
});
}
//4 - not right :(
else if(req.method === "PUT" && req.url.indexOf("/users/") > -1){
let id = req.url.split("/");
let user = users.find(p=>p["_id"] == id[2]);
let body = [];
req.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
body = JSON.parse(body);
user.newThing = body;//use res.write??
});
}
//5 also not working properly :(
else if(req.method === "DELETE" && req.url.indexOf("/users/") > -1){
let id = req.url.split("/");
console.log(id[2])
let user = users.find(u=>u["_id"] == id[2]);
let index = users.indexOf(u=>u[_id] == user[_id])
console.log(index);
users.splice(Number(index), 1);
res.write('Deleted')
}

// else if(req.method === "GET" && req.url === "/products"){
// getProducts(req, res);
// }
// else if(req.method === "PUT" && req.url.indexOf("/products/") > -1){
// let id = req.url.split("/");
// let product = products.find(p=>p["id"] == id[2]);
// let productsJSON = JSON.stringify(product);
// res.write(productsJSON);
// }
else{
res.write("Not Found");
}
res.end();
}

function getUsers(req, res){
let usersJSON = JSON.stringify(users);
res.write(usersJSON);
}
function getProducts(req, res){
let productsJSON = JSON.stringify(products);
res.write(productsJSON);
}