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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
115 changes: 115 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
// SETUP AN EXPRESS SERVER
// Import Express / Cors / Controllers into index.js
const express = require("express");

// Define PORT Variable
const PORT = 3001;

// Initiate an app Instance below initial imports
const app = express();
app.use(express.json());

// ADDING BASIC ROUTES
// Home Page
app.get("/", (req, res) => {
res.send("Home Page");
});

// Simple GET Route
app.get("/greet", (req, res) => {
console.log("simple GET route");
res.send("Hello World!");
});

// GET /greet/:name
app.get("/greet/:name", (req, res) => {
console.log(`simple GET route with name param`);
res.send({
msg: `Why hello there,${req.params.name}!`,
});
});

// GET /five
app.get("/five", (req, res) => {
res.send([1, 2, 3, 4, 5]);
});

// FRUIT & VEGGIES ROUTES
// FRUITS
const fruits = [
{ name: "apple", color: "red or green" },
{ name: "blackberry", color: "dark purplish-black" },
{ name: "apricot", color: "pale yellowish-orange" },
{ name: "strawberry", color: "red" },
{ name: "mango", color: "yellow" },
];

app.get("/fruits", (req, res) => {
// Return the array of fruits
res.send(fruits);
});

// BONUS - Add Fruits Sort
// Function to sort fruits array by name
function sortFruitsByName(fruitsArray) {
return fruitsArray.sort((a, b) => {
if (a.name < b.name) {
return -1;
}
if (a.name > b.name) {
return 1;
}
return 0;
});
}

app.get("/fruits/sort", (req, res) => {
// Sort the fruits array by name
const sortedFruits = sortFruitsByName(fruits);

res.send(sortedFruits);
});

app.get("/fruits/:name", (req, res) => {
const fruitName = req.params.name.toLowerCase();

// Use the `filter` higher-order function to find the fruit by name
const fruit = fruits.filter((f) => f.name === fruitName);

if (fruit.length > 0) {
res.send(fruit[0]); // Send the first matching fruit
} else {
res.status(404).send({ error: "Fruit not found" });
}
});

// VEGGIES
const veggies = [
{ name: "kale", color: "green" },
{ name: "onion", color: "red or white" },
{ name: "lettuce", color: "green" },
{ name: "peas", color: "green" },
{ name: "corn", color: "yellow" },
];

app.get("/veggies", (req, res) => {
// Return the array of veggies
res.send(veggies);
});

app.get("/veggies/:name", (req, res) => {
const veggieName = req.params.name.toLowerCase();

const veggie = veggies.filter((f) => f.name === veggieName);

if (veggie.length > 0) {
res.send(veggie[0]); // Send the first matching fruit
} else {
res.status(404).send({ error: "Veggie not found" });
}
});

// Bind the App to a PORT with app.listen() at the bottom of the file
app.listen(PORT, () => {
console.log(`Serving up delicious fruits & veggies on port ${PORT}`);
});
12 changes: 12 additions & 0 deletions node_modules/.bin/mime

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/mime.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions node_modules/.bin/mime.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions node_modules/.bin/nodemon

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/nodemon.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions node_modules/.bin/nodemon.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions node_modules/.bin/nodetouch

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/nodetouch.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions node_modules/.bin/nodetouch.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions node_modules/.bin/nopt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/nopt.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions node_modules/.bin/nopt.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions node_modules/.bin/semver

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions node_modules/.bin/semver.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading