Ejemplo de interfaz REST con el framework django
Este programa utiliza el framework sobre python django para crear una interfaz RES sobre una mini aplicación de alquiler de coches.
Se han seguido los pasos normales para crear una aplicación con dejango y posteriormente se han añadido las capacidades REST:
[Tutorial de REST sobre django] http://www.django-rest-framework.org/tutorial/
###Dependencias necesarias:
Se ha usado python 3 sobre anaconda, se necesita instalar:
- sudo /usr/local/anaconda3/bin/pip install djangorestframework
- sudo /usr/local/anaconda3/bin/pip install mysqlclient
##Ejecución:
- /usr/local/anaconda3/bin/python manage.py runserver
###Ejemplos de comandos disponibles: - http://localhost:8000/rent/rest_car/1/ ver detalles del coche 1 - http://localhost:8000/rent/rest_car/ ver todos los coches - http://localhost:8000/rent/rest_client ver los clientes - http://localhost:8000/rent/rest_client/1/ ver un cliente concreto
import requests
data={'car_model':'Jaguar Casi S','car_plate':'AWR456'}
r = requests.post("http://localhost:8000/rent/rest_car/", data=data, auth=('usuarioxxx','passwdusuarioxxx'))/usr/local/anaconda3/bin/http -a sblanco:1234qwerty POST http://127.0.0.1:8000/rent/rest_car/ car_model="Jaguar casi S" car_plate="3445AWS" car_date="2018-04-03T07:55:53Z"En el settings:
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10 }
En el directorio Docker se han grabado los ficheros necesarios para ejecutarlo sobre un docker:
- docker build -t rentacar .
- docker swarm init --advertise-addr 127.0.0.1
- docker stack deploy -c rentacar.yml rentacar
- docker ps vemos los ids de los contenedores:
```
CONTAINER ID IMAGE COMMAND
cf96c0a700ea rentacar:latest "/usr/bin/tini -- /b…"
4ec8ac67d9c0 mysql:latest "docker-entrypoint.s…"
```
- Nos conectamos al contenedor rentacar: docker exec -it cf96c0a700ea bash
- Cargamos la estructura de la base de datos inicial: python manage.py migrate
- Creamos el usuario admin: python manage.py createsuperuser
- Nos conectamos a: http://127.0.1.1:8000/admin/
- Usuario contraseña <contraseña anterior>
- docker exec -it 0195d90f22f2 bash
- docker inspect e8b5ee2b2797
- docker swarm leave --force
- docker rmi -f rentacar
- docker ps