Giter Club home page Giter Club logo

foodie-web-service's Introduction

Foodie-Web Service

By Advith Chegu (ac1771)

Q: A short paragraph or two describing what you accomplished.

A: My foodie web service is a REST Api built using python's flask library along with flask's swagger documentation library used to test my service. The docs can be reaches by entering localhost:5000/docs in a url bar when you run the service locally.

The service takes in your address as an argument and uses the Geocod.io api to pinpoint the coordinates of your address. It returns an error status code if the address was not found or if the client enters a malformed address.

Next, using the coordinates, Foodie-Web uses Yelp's Fusion api to find the nearest 20 businesses and returns the result as a JSON. Because the goal of the service is just to give the client the name, address, and rating of the restaurant, the service parses the returned JSON and forms its own object to return.

# service returns a list of business models
BUSINESS_MODEL = api.model("Business", {
    'name': fields.String(required=True),
    'address': fields.String(required=True),
    'rating': fields.Float(required=True),
})

Q: A short paragraph or two describing any issues you may have encountered and how you think you could have solved them. If you didn’t have any simply state that you didn’t have any issues.

A: I used flask every day in my internship which is mostly the reason why I did not encounter any issues. However for someone unfamiliar with the space I can see why building a REST Api might seem a bit complicated.

Q: A short description on the libraries/packages you used

A: All the packages I used can be found in my pipfile, I'll go over the most important ones for this project

flask: Flask is a web framework written in python which allows developers to create and test their REST Apis very quickly.

python-dotenv: This library allows developers to easily read secrets from their .env file. I used this to store the keys used for yelp and geocod so that I wouldn't accidentally expose the keys when being pushed to a remote repository.

requests: This library allows developers to easily make requests to any publicly exposed api/webpage on the internet. I used it to fetch the Geocod and Yelp data.

Q: A short description on how to start your web service

A: The first thing that you must do is install the packages. You can do this by first running pipenv shell then running pipenv install which will install all of the packages in the Pipfile file in this folder.

(If you're using VSCode) I've included the .vscode file, you should simply be able to go to the debugging panel and press the green play button which says Python: Flask.

(If you're not) First cd to this folder. Next you need to tell flask which is the main file. You can do this by copying the following command into the terminal: export FLASK_APP=main.py. Next, you can simply run the following command in your terminal after you python -m flask run and the app should be visible if you hit localhost:5000/restaurants

An example query would be as follows:

curl -X 'GET' \
  'http://localhost:5000/restaurants?Address=40%20College%20Ave%2C%20New%20Brunswick%2C%20NJ%2008901' \
  -H 'accept: application/json'

Q: A short description of where you placed your Geocod.io / Yelp API key within your code. (This way I can replace it with my own if I need to)

A: Just create a .env file in this folder with the following information:

geocode-key=
yelp-client-id=
yelp-key=

foodie-web-service's People

Contributors

advil64 avatar

Watchers

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