Create a REST API endpoints with Authentication and Registration. Read the README.md for more information.
Project description
About cookiecutter-drf-microservice
cookiecutter-drf-microservice is a ready-to-use API skeleton, Cookiescutter generates it, add your endpoints, test it, package it, validate it on stage and deploy it. It sounds simple and it is. I'm use it to generate drf-microservice. Something disturb you in the code? Don't hesitate to submit a pull request and contribute.
Releases Notes
- 0.7.0: cookiecutter-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
AWS secret required
APPNAME_USERNAME_PASSWD => a client API password
SECRET_KEY => the secret key
ENV required
AWS_REGION_NAME => default="eu-east-1"
AWS_APPNAME_SECRET_NAME =>The name of the secret bucket
To setup
If needed install cookiecutter:
pip install cookiecutter
Cookiescutter will generate it for you:
cookiecutter gh:alainivars/cookiecutter-drf-microservice 00:31:00
github_username [my-github-user-name]: alainivars
github_repository_name [my-repository]: my-drf-microservice
app_name [my_app]: my_api
email [my-email@my-domain.my]: alainivars@gmail.com
description [The description of my drf app]: A simple demo on how to use cookiecutter-drf-microservice generator
Now we just jump in the new directory and run tox to:
- be sure that everything as worked fine
- generate the documentation
cd my-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 manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
- for fish
env SECRET_KEY=my_secret_key
python manage.py makemigrations
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 Dynamic documentation for the API 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
curl --request GET \
--url http://127.0.0.1:8000/docs/ \
--header 'authorization: Token 400a4e55c729ec899c9f6ac07818f2f21e3b4143'
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
Build and run the image with Docker
Build the Docker image:
WORK IN PROGRESS
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
- endpoint get status Icinga2
Functionalities TODO
- AWS ssm secret
- endpoint json file DELETE,PUT?
- create differents 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 docker-compose configuration file (in progress)
- the Packer configuration file
- the Terraform configuration file AWS
- 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cookiecutter-drf-microservice-0.7.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93671b9d3854ed1594399c096205017112c6da8da0146e216a3263f1113037b4 |
|
MD5 | 6fe0e5a3e2a4c0102df998660c6b3fa4 |
|
BLAKE2b-256 | 2eb9b513d3f45764853edfeda6f00f36d2d575c22a69aa924fde52e63ff8743f |
Hashes for cookiecutter_drf_microservice-0.7.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eea17b0d9bd00f3ac13485c1cc214f7b7145d9424a5a2e11d117bb2567d2d835 |
|
MD5 | a98b7f9bcca87d23430985cf07d571a8 |
|
BLAKE2b-256 | 982802f58a0642e0ba63f26b238cc860668a6a025b3bd70c952c969784256175 |