Welcome to drf-microservice documentation!

Build status Test coverage status Requirements Status pypi download python supported licence PyPi version Code Health Documentation status PyPi wheel

About Drf-microservice

drf-microservice is a ready-to-use API skeleton:

It sounds simple and it is. Take a look at Drf-microservice it’s now generated by Cookiescutter-drf-microservice.

Something disturb you in the code? Don’t hesitate to open a an issue and contribute.

Releases Notes

  • 0.7.1: Remove all .md file, update the doc,
  • 0.7.0: Cookiescutter-drf-microservice got it own separate repository
  • 0.6.1: Update dependencies
  • 0.6.0: total refactoring for add cookiecutter
  • 0.5.2: fix depencies security alert
  • 0.5.1: fix some document presentation on github and pypi
  • 0.5.0: Initial publication version

Bugs and evolution policies

When you will find a bug or propose an evolution create a ticket on:

To setup

  • Now we just jump in the new directory and run tox to ::
    • be sure that everything as worked fine
    • generate the documentation
    • generate an virtualenv
    cd drf-microservice
    tox
    
  • An virtualenv is already ready for you at

    tox -l
    py36-django222
    
  • or you can create your

    python3 -m venv /pass/to/venv
    
  • for bash, zsh

    source .tox/py36-django222/bin/activate
    
  • for fish

    source .tox/py36-django222/bin/activate.fish
    
  • for bash, zsh

    SECRET_KEY=my_secret_key
    python setup.py makemigration
    python manage.py migrate
    python manage.py createsuperuser
    
  • for fish

    env SECRET_KEY=my_secret_key
    python setup.py makemigration
    python manage.py migrate
    python manage.py createsuperuser
    
  • then run it

    SECRET_KEY=my_secret_key
    python manage.py runserver
    
  • if you have any problem or you want enable the debug mode

    ENABLE_DEBUG=1
    

API

To see the documentation for the API In development mode, login at

curl --request POST \
  --url http://127.0.0.1:8000/api-auth/login/ \
  --header 'content-type: application/json' \
  --data '{
    "username": "admin",
    "password": "admin"
    }'

Actually the default mode is “development” (same to the state of this project) in that mode a default login is the the db with username=’admin’ password=’admin’ you will get back in return your token:

{"key":"400a4e55c729ec899c9f6ac07818f2f21e3b4143"}

Then open to see the full auto-generated documentation of you API:

curl --request GET \
  --url http://127.0.0.1:8000/docs/ \
  --header 'authorization: Basic YWRtaW46YWRtaW4='

or by if BasicAuthentication is disabled and that wil be normally the case in prod and QA we use the Token:

curl --request GET \
  --url http://127.0.0.1:8000/docs/ \
  --header 'authorization: Token 400a4e55c729ec899c9f6ac07818f2f21e3b4143'

Then open

http://127.0.0.1:8000/docs/
_images/docs.png

Testing

You can run the tests by

SECRET_KEY=my_secret_key python manage.py test

or by

python setup.py test

or by

DJANGO_SETTINGS_MODULE={{cookiecutter.app_name}}.config.local SECRET_KEY=my_secret_key pytest

Security check

Before dockerization for deployment to production, don’t forget to check if by

SECRET_KEY=my_secret_key python manage.py check --deploy

If you Use Aws

Aws secret:: WORK IN PROGESS

DRF_MICROSERVICE_PASSWORD => a client API password

Aws Env required:

AWS_REGION_NAME => default="eu-east-1"
AWS_DRF_MICROSERVICE_SECRET_NAME =>The name of the secret bucket

Build and run the image with Docker

Build the Docker image:

docker build -t my-drf -f Dockerfile.drf-microservice .
docker build -t my-nginx -f Dockerfile.nginx .

Run the container:

docker network create my-network
docker run -d --name drf --net my-network -v /app my-drf
docker run -d --name nginx --net my-network -p "5000:80" my-nginx

If you want to change the port binding, it’s here…

Build and run wit docker-compose:

docker-compose up

Functionalities DONE

  • support basic auth
  • support token auth
  • endpoint json file POST,GET
  • endpoint login/logout
  • endpoint get tocken
  • postgreSQL support

DevOps tools DONE

  • the docker-compose configuration file
  • endpoint get status Nagios/Icinga2

Functionalities TODO

  • AWS ssm secret
  • endpoint json file DELETE,PUT?
  • create different version:
    • Aws S3 support (in progress)
    • Aws RDS support
    • Aws Elastisearch support
    • Redis support
    • Aerospike support

DevOps tools TODO

  • the docker-image configuration file (in progress)
  • the Packer configuration file (in progress)
  • the Terraform configuration file AWS (in progress)
  • the Terraform configuration file GCD
  • the Terraform configuration file Azure
  • add getSentry support
  • add Aws Cloudwatch support
  • the Ansible configuration file AWS
  • the Ansible configuration file GCD
  • the Ansible configuration file Azure
  • the Juju configuration file AWS
  • the Juju configuration file GCD
  • the Juju configuration file Azure