Skip to content

viniciusenari/VideoDirectoryAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Video Directory API

Python DjangoREST MongoDB Redis

Introduction

This application is a REST API that allows users to index and retrieve video information separated in categories.

Project Support Features

  • Users can store and retrieve videos information.
  • Users can store and retrieve video categories information.
  • Users can get a list of videos separated by category.
  • Public (non-authenticated) users can get information from a limited set of videos.
  • Pagination, search, throttling, and caching.

Technologies Used

  • Python - Programming language.
  • Django Rest Framework - This is a powerful and flexible toolkit for building Web APIs. It is used to build APIs in Django.
  • MongoDB/MongoDB Atlas - Free open source NOSQL cross-platform document-oriented database with scalability and flexibility. Data are stored in flexible JSON-like documents. MongoDB Atlas is a cloud-hosted database service for MongoDB.
  • Redis - An open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. In this project is is being used to cache data.

Installation Guide

  • Clone this repository.
git clone https://github.com/viniciusenari/videos-api.git
  • Create a virtual environment.
python3 -m venv venv
  • Activate the virtual environment.
source venv/bin/activate

Or, if you are using Windows:

venv/bin/activate
  • Install the dependencies.
pip install -r requirements.txt
  • Rename the .env.example to a .env file and add the following environment variables.
DEBUG=True
SECRET_KEY=your_secret_key
ALLOWED_HOSTS=*
DATABASE_URL=your_database_url
REDIS_URL=your_redis_url
  • Run the migrations
python manage.py migrate

How to use

  • Start Redis server.
  • Start the Django development server.
python manage.py runserver

API Endpoints

HTTP Verbs Endpoints Action Parameters
GET /categories/ Retrieve a list of categories ?page
POST /categories/ Create a new category
GET /categories/{id}/ Retrieve a single category
PUT /categories/{id}/ Update a single category
PATCH /categories/{id}/ Partially update a single category
DELETE /categories/{id}/ Delete a single category
GET /categories/{id}/videos Retrieve a list of videos in the same categories ?page
GET /videos/ Retrieve a list of videos ?search, ?page
GET /videos/free Retrieve a list of videos for unauthenticated users
POST /videos/ Create a new video
GET /videos/{id}/ Retrieve a single video
PUT /videos/{id}/ Update a single video
PATCH /videos/{id}/ Partially update a single video
DELETE /videos/{id}/ Delete a single video

Documentation

You can view the API documentation created with Swagger and Redoc through the endpoints /swagger/ and /redoc/.

License

This project is available for use under the MIT License.

About

REST API developed using the Django Rest Framework for indexing and retrieving videos information

Topics

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages