Giter Club home page Giter Club logo

lab-express-chuck-norris's Introduction

Ironhack Logo

PP | Express: Chuck Norris Jokes

Learning Goals

After this learning unit, you will be able to:

  • Create a basic web application using Express
  • Add a static route to display content
  • Get in touch for the first time with an API
  • Create a request to the Chuck Norris API to retrieve content and display it

Requirements

Submission

Upon completion, run the following commands

$ git add .
$ git commit -m "done"
$ git push origin master

Navigate to your repo and create a Pull Request -from your master branch to the original repository master branch.

In the Pull request name, add your name and last names separated by a dash "-"

Deliverables

Please, push every file needed to make your app properly on GitHub before creating the pull request.

Introduction

Chuck Norris is a famous actor and martial artist that starred in many American movies in the '80s and '90s.

Chuck Norris Picture

After his film career died off, the people of the internet turned him into a living meme. Chuck Norris Facts quickly became all the rage. These "facts" are just hyperbolic jokes on the skills of Chuck Norris.

Chuck Norris counted to infinity... twice

Chuck Norris can put out a fire... with gasoline

Michael Jackson can moonwalk but Chuck Norris can sun walk

Today, we will be building a Chuck Norris joke finder using Express.

Setting up a new project

Once you fork this repo, remember to initialize a new project

$ npm init

Type enter to approve default settings.

Install express into your project and ejs to use views. Remember to tell your Express app that EJS will be in charge of rendering the HTML and specify the path where the views will be available.

At the end of the exercise you should have at least four routes:

  • /- The homepage with a description and links to the other pages
  • /random- To display a random joke
  • /categories - To display a joke by category
  • /search - To search for a joke by keyword (so it will have to display a form to be filled by the user)

Iteration 1 - Get a random joke

To retrieve data from the API, we need to install a package: chucknorris-io:

$ npm install --save chucknorris-io

Remember you need to require the package once installed. In this case it will be:

const Chuck    = require('chucknorris-io');
const client   = new Chuck();

Create a route using Express for the /random Web address. When a user visits http://localhost:3000/random, the application should request a random joke using the chucknorris-io package and show it in a p tag.

The package has a getRandomJoke() method that you should use here:

// Retrieve a random chuck joke
client.getRandomJoke()
  .then((response) => {
    // use the response here
  }).catch((err) => {
    // handle error
  });

Iteration 2 - Get a joke by category

The Categories List

To be able to filter our jokes by category, first we need to display the available categories.

Create a new route /categories in your Express application. When a user visits http://localhost:3000/categories, the application should show the full list of joke categories.

The chucknorris-io package offers a method to retrieve the available categories:

client.getJokeCategories()
  .then((response)=>  {
    // use the response here
  })
  .catch((err)=> {
    // handle error
  });

๐Ÿ’ก When your app requests the list of categories to the Chuck Norris API, the response will be an array. Prepare the data to show it in the view by sending as a view local with res.render().

Each category should be a link. When a user clicks one of them, they should be sent to the category page. For example:

Set the href of your anchor tags to match that.

The URL with the new joke

In your app.js, create a new route with the name of the selected category as a parameter in the Web address (remember the params).

Use this parameter to make the request to the API using the getRandomJoke() method provided by the chucknorris-io package. The method can receive the name of a category as an argument.

// Retrieve a random chuck joke
client.getRandomJoke('dev')
  .then((response) => {
    // use the response here
  }).catch((err) => {
    // handle error
  });

Display the result in the view joke-by-category.ejs.

Iteration 3 - Get a joke by keyword

The Form

Users will need a field to enter the keyword that your application will use to request the joke.

Create a new get route /search in your Express application. Once the user goes to http://localhost:3000/search, the application should display a form.

Create a new view search-form.ejs with the form HTML. Add a post action and send it to the same route /search.

The form should have one input for the search term and a submit button.

Create a new post route /search to capture the data sent from the form. In this route, let's perform the search using the chucknorris-io package.

client.search(searchTerm)
  .then(function (response) {
    // to stuff here
  }).catch(function (err) {
    // handle error
  });

Rendering the result

Use the same route to render your result.

Iteration 4 - Home page

Add a home page route with a heading and a description of the app. Include <a> tags to link to the different pages the app.

Extra Resources

lab-express-chuck-norris's People

Contributors

jalexy12 avatar lluisarevalo avatar nizaroni avatar

Watchers

James Cloos 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.