Create an API and Deploy to Cloud Server


  • Create an API endpoint that serves one table from your database in an array-of-objects format. (For example:[     {         “id”: 0,         “location”: “Tampa”,         “population”: 2877000     },     {         “id”: 1,         “location”: “Orlando”,         “population”: 1964000     } ])
  • Document your setup steps on a 3rd page of your website, and add a link to your navigation bar.

Deployment Requirements

You may choose one of the following ways to deploy your website:

  1. Serve both your static site and your API using the Flask server you deploy to Heroku.
  2. Continue to host your HTML on github pages, and add a link to your API endpoint to retrieve data

Option 1 is the industry-standard deployment, and should also be easier based on the tools you know at this point. Option 2 is a bit more stable, as your report will still be available even if you mess up a deployment.

Deployment Help

We will go over how to deploy your website using various services as optional lectures during class:

  • Heroku
  • PythonAnywhere
  • AWS EC2 instance (using Dokku, a self-hosted Heroku-ish server)

Host your database in the cloud

For this, you will deploy your database to a database hosting service and usee that for your API.

  • Host your database on a remote PostgreSQL server.
    • For Heroku: You will need to use the PostgreSQL addon.
    • For PythonAnywhere: You can use any database hosting service. Here are some recommendations:
      • ElephantSQL
      • Amazon RDS (relational database service on AWS)
      • Heroku
  • Add a web page to your navigation documenting your database set up steps.

Note: Heroku will periodically change your database URL, which will break your website unless you also host your flask server on Heroku.Another Note: Amazon will change your database URL if you turn off the virtual machine.Be sure your database is turned on and accessible before submitting your project. You should check your site every couple days or so to be sure the database URL hasn’t changed, and update your settings if it does.