GithubHelp home page GithubHelp logo

weather-app-front-end's Introduction

Fun With Multiple APIs

Up until this point, you've been able to gain a lot of experience working with a single API, rendering pretty much exactly what has been given to you from the back end. For this challenge, we will now need to access multiple back end routes. Correctly displaying the needed data will require you to take data retrieved from one fetch request and pass that data to a second route, which will return the data you can use to populate the DOM. The second route ONLY accepts latitude and longitude as position data, which explains the need for the multiple calls.

Objectives

  • Create a web site with a form that has just one input. The input will allow users to type in a free-text description of their location. Any free text like these will work:

    • A short zip code like 98102
    • A city and state like Seattle, WA
    • A very specific address 1411 4th Ave, Seattle, WA
    • Pretty much anything else! Try it out!
  • Use whatever the user types into the input as a query to the first API endpoint (the Google Location API) when the form is submitted.

  • The data you get back from this first endpoint will contain a latitude and longitude value. Send the latitude and longitude in a GET request to the second API endpoint to retrieve weather data.

  • Pick off data returned from the weather API and render the daily forecast provided.

Getting started

A barebones HTML scaffold has been provided for your in index.html. In index.js, grab the appropriate DOM elements that you will need to access to submit your fetch requests.

You will use the following endpoints to access the data.

  • BASE_URL = https://weather-app-rails.herokuapp.com
  • LOCATION_ENDPOINT = /location/${location}
  • WEATHER_ENDPOINT = /weather?loc=${latitude}_${longitude}

You can view these example requests in your browser:

Location and weather data are being provided by Google and Dark Sky. We have set up these routes as it is typically inadvisable to store API keys on the front end of a client facing application.

Ultimately, how you display your forcast is completely up to you. At a minimum your front-end should display a parsed date object followed by the summary for each day's weather forecast.

Stretch Goals

If you find yourself finishing this lab early, here are some other goals that will stretch your comprehension of various aspects of web development.

  1. Make it look pretty! - We've purposefully left the front end of this application very bare bones. Once you have the data displayed as needed, spice up your CSS and HTML skills and make this all look a little more appealing that just plain HTML.

  2. Visit the resource links below, obtain an API key or two, and refactor your code to hit these routes directly. As noted above, this is not typically best practice, but the skills gained from reading documentation and applying that knowledge are what you'll be using constantly as a developer. JUST DON'T PUSH YOUR API KEYS UP TO GITHUB.

  3. Want to follow best practices? Build out a rails server with it's own endpoints to hit these APIs in a more appropriate way. This will likely take more time, but will again to help solidify the ways in which your front end interacts with the back end, giving you full control over both.

Resources

weather-app-front-end's People

Contributors

dstoll243 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.