Skip to content

Latest commit

 

History

History
146 lines (108 loc) · 6.42 KB

README.MD

File metadata and controls

146 lines (108 loc) · 6.42 KB

Build Status Coverage Status Codacy Badge

ShoppingList API

This project is hosted on Heroku. It can be accessed here https://shoppinglistapi1.herokuapp.com

The ShoppingList API is a simple REST API built with Python and the Flask web application framework.

It consists of the following features:-

  • Register a new user
  • Login a user
  • Logout a logged in user
  • Reset password for a registered user
  • Add shoppinglists/items
  • Edit shoppinglists/items
  • Delete shoppinglists/items

API Endpoints

Type API EndPoint Public Access Usage
POST /api/v1/auth/register TRUE Register a new user: requires an email and a password
POST /api/v1/auth/login TRUE Log in a registered user using their email and password
POST /api/v1/auth/logout TRUE Use a generated authentication token to logout a user
POST /api/v1/auth/reset-password TRUE Change the password for a registered user
POST /api/v1/shoppinglists FALSE Add a shopping list to a logged in user account
GET /api/v1/shoppinglists FALSE View all shopping lists associated with a user account
GET /api/v1/shoppinglists/<id> FALSE View the details of a shopping list specified by <id>
PUT /api/v1/shoppinglists/<id> FALSE Edit the attributes of a shopping list using its <id>
DELETE /api/v1/shoppinglists/<id> FALSE Deletes shopping list with <id>
POST /api/v1/shoppinglists/<id>/items/ FALSE Add item to the shopping list with that <id>
GET /api/v1/shoppinglists/<id>/items/ FALSE View all items in the shopping list with that <id>
GET /api/v1/shoppinglists/<id>/items/<item_id> FALSE View one item on a shoppinglist with its ID <id> and item ID <item_id>
PUT /api/v1/shoppinglists/<id>/items/<item_id> FALSE Edit a shopping list item specified by <item_id>
DELETE /api/v1/shoppinglists/<id>/items/<item_id> FALSE Delete an item from the specified shopping list

Getting Started

Prerequisites

It is assumed that you have Python 3.6 and Git installed on your local environment. Check to ensure that both are added to Path.

Start by cloning this repository. This will create a directory ShoppingListAPI on your local machine.

$ git clone https://github.com/isheebo/ShoppingListAPI

In this directory/folder, You would need to create a Python virtual environment and activate it.

If the virtualenv package is not installed globally, run pip install virtualenv from the commandline. Then, a virtual environment with name virtualenv can be created by running

$ virtualenv -p python3 ./virtualenv

On Windows, create the virtual environment as indicated below

$ virtualenv --python=<path to your python 3 executable> ./virtualenv

where by the virtualenv is the virtual environment folder created in the ShoppingListAPI directory.

Then you can activate the virtual environment and install the requirements as shown below:-

On Unix (MacOS X, Linux and BSD) based systems,

$ source virtualenv/bin/activate
$ pip3 install -r requirements.txt

On Windows,

$ cd virtualenv/scripts
$ activate
$ cd ..
$ cd ..
$ pip install -r requirements.txt

Note:

  • To install the requirements using pip as mentioned above, make sure you are in the root folder (ShoppingListAPI folder). That is, where the file requirements.txt is located in the directory tree.
  • on MacOSx, Linux & BSD, pip3 should be used instead of pip.

Database Setup

  • PostgreSQL is utilised on the backend. If you are unfamiliar with the commandline, I would recommend you install your PostgresSQL from the PostgresSQL website. This option comes with the pgAdmin utility (or Postgres.app for MacOs X) which may be easier to interact with when compared to the terminal or the HomeBrew installation.

  • If you have PostgresSQL installed, create databases ShoppingList and ShoppingListTest. (if you use other database names, change the SQLALCHEMY_DATABASE_URL in config.py to reflect the URLs of your databases.)

  • Create a file settings.py in the root of your project (at the same level as manage.py file).

  • In the settings.py file, create DATABASE_URL and TEST_DATABASE_URL variables and assign the database URL and the test database URL respectively to the created variables.

  • To check if you have properly configured your databases, run

$ python manage.py db init
$ python manage.py db migrate
$ python manage.py db upgrade

Running the Application

 $ python3 manage.py runserver

This will start at server running at address http://127.0.0.1:5000 . Append any endpoints to the end of this URL (e.g. http://127.0.0.1:5000/api/v1/auth/register) so as to test them. I would recommend you use Postman for testing.

Testing

To run the tests of the project, use

 $ nosetests -v --rednose --with-coverage --cover-package=app