CRUD con PyMongo
Para trabajar con Mongo primero se clona el repositorio flask-backend-mongo, este es modificado del repositorio original web-app-dev.
Para usar correctamente la aplicación es necesario instalar Vagrant y VirtualBox para generar una máquina virtual en Windows que permita trabajar con Linux. Una vez instalados Vagrant y VirtualBox, se ingresa en la carpeta previamente clonada y se usan los siguientes comandos en la terminal:
vagrant up
vagrant ssh
Con estos comandos se carga el entorno de la máquina virtual y se hace la conexión. Después se ingresa:
cd /vagrant
Al ingresar este comando en la terminal, dentro del ambiente vagrant, se está cambiando al directorio vagrant que se encuentra dentro de flask-backend-mongo. Una vez dentro de este directorio se ingresa en la terminal:
docker-compose up
Con estos pasos se baja una imagen Mongodb de Docker y se instalan todos los requerimientos necesarios.
El ambiente Windows y el ambiente Linux no son compatibles, por lo que es posible que haya un error al ejecutar el último comando y no sea posible hacer la conexión con la base de datos. Para solucionar este problema, se debe cambiar el marcador de nueva línea de formato CRLF a formato LF en los siguientes archivos:
docker-compose.yml
Vagrantfile
En la carpeta api: run.sh, app.py
En Visual Studio, en la barra de estado se cambia de la siguiente forma:
En la barra de estado de Visual Studio deben verse los campos que se muestran en la imagen. Se da click en CRLF y se cambia por LF.
La aplicación se habrá desplegado correctamente una vez aparezca un mensaje en consola similar al siguiente:
Una vez se haya hecho la conexión con la base de datos, esta puede ser consultada usando Postman con el puerto 8080. Para cancelar la conexión se escribe en la terminal:
Ctrl + C
exit
vagrant halt
Con el primer comando se cancela la conexión, con el siguiente se sale del ambiente vagrant y con el último se apaga correctamente la máquina virtual.
A continuación, se mostrará el CRUD (Inserción, Borrado, Consulta y Actualización) de dos colecciones de una base de datos usando PyMongo, estas colecciones están relacionadas con el proyecto descrito anteriormente que trata de un software de gestión de farmacia. Las colecciones que se mostrarán son ‘medicamentos’ e ‘inventario’, para probar la aplicación se pueden descargar las colecciones del siguiente link e importarlas en postman: Colecciones en Postman.
COLECCIÓN: Medicamentos
POST
El método POST es empleado para enviar nuevos datos al servidor en un formato json como se evidencia en la figura anterior. Para este caso, se hizo uso de la colección “medicamentos” del sistema de gestión de farmacia. Aquí es donde se añade la información nueva de cada medicamento que la farmacia tiene a su disposición, información como: nombre, presentación y tipo del medicamento además de la información basada en los proveedores que suministran y abastecen la farmacia. En el postman solo fue necesario acceder a la ruta ‘http://localhost:8080/medicamentos’ , seleccionar el método POST de http y enviar la información nueva. Como la respuesta fue positiva, se retornó el mensaje ‘OK’.
GET
El método GET nos permite solicitar datos al servidor para mostrar la información suministrada en una colección específica. La figura anterior presenta toda la información suministrada en la colección ‘medicamentos’, información como: nombre, presentación y tipo del medicamento además de la información basada en los proveedores que suministran y abastecen la farmacia. Es decir, presenta todos los medicamentos que están guardados en la colección. En este caso también solo se hace uso de la ruta ‘http://localhost:8080/medicamentos’ y se selecciona el método GET de http en el postman.
GET por ID
De igual manera que en el caso anterior, el método GET es utilizado para mostrar la información suministrada en la colección ‘medicamentos’ con la diferencia de que acá solo se accede a la información de un solo medicamento y no a todos. En el ejemplo se evidencia que la ruta es diferente, pues para acceder a un medicamento específico, es necesario agregar el id del medicamento buscado. En este caso, como se buscó el medicamento ‘Acetaminofen’, fue necesario acceder a dicho medicamento mediante esta ruta que contiene el id: http://localhost:8080/medicamentos/624fc6e16dbbcc5f6e16dbbcc5f65d52c43
PUT
El método PUT se utiliza para actualizar la información ya existente en el servidor. En la primera imagen se presenta cómo se realiza la actualización de un medicamento específico de la colección ‘medicamentos’. Acá solo basta con poner en la ruta el id del medicamento que desea ser modificado http://localhost:8080/medicamentos/624fc6e16dbbcc5f6e16dbbcc5f65d52c43 y se selecciona el método PUT en el postman. Por ejemplo, para este caso se modifica la dosificación del medicamento ‘Acetaminofen’ de 80mg a 200mg. En la segunda imagen se realiza otra vez el método GET por ID para verificar que si haya sido actualizado, como efectivamente sucedió.
DELETE
El método DELETE permite eliminar un dato específico contenido en el servidor. Para realizar este método, es necesario especificar en la ruta el id del medicamento que se desea eliminar de la colección ‘medicamentos’ y seleccionar el método DELETE de http. Para este ejemplo, eliminamos el medicamento ‘Acetaminofen’, pues en la primer imagen en la ruta especificamos el id de ese medicamento y se obtiene una respuesta positiva. En la segunda imagen verificamos que el medicamento ‘Acetaminofen’ haya quedado eliminado con el método GET que permite mostrar los medicamentos contenidos en la colección. Efectivamente el medicamento ‘Acetaminofen’ quedó eliminado de esta colección, pues el medicamento que se evidencia en la colección solo es ‘Ibuprofeno’.
COLECCIÓN: Inventario
POST
De igual forma que en el anterior microservicio, en este caso, el cliente envía información al servidor y luego a la base de datos de MongoDB, para almacenar un nuevo inventario. Dicha información se encuentra en un formato de archivo tipo JSON, donde los parámetros o las llaves corresponden a la Fecha (fecha de realización del inventario), Medicamento (el medicamento al que se le realizará control, identificado por un “id”) y Stock (la cantidad actual de este medicamento), donde cada una contiene su respectivo valor. Adicionalmente, realizar la petición desde Postman es bastante sencillo, se indica únicamente el método POST y la ruta que se requiere: ‘http://localhost:8080/inventario’.
El servidor, al ejecutar exitosamente la petición PUT, responde en consola con un mensaje de “ok”, tipo JSON. Este método genera un número de identificación ‘_id’ tipo “oid” (Object) propio del elemento que se agrega a la base de datos. Lo anterior podrá observarse en el siguiente método
GET
Este método, como ya fue mencionado, al realizar la petición al servidor, se obtienen todos los documentos de una colección desde la base de datos. Los datos que arroja corresponden al “_id” o número de identificación del documento, la fecha, el medicamento con su respectiva identificación y finalmente el stock (existencia del producto en la fecha del inventario). Seleccionando el método GET, se usa la misma ruta que en el caso del método POST: ‘http://localhost:8080/inventario’.
En este caso, podemos observar que el documento, que fue añadido en el caso del método POST, se encuentra dentro de la colección actualizada (último documento en la imagen).
GET por ID
En esta ocasión, se usa el mismo método anterior, pero se solicita una petición al servidor con el identificador tipo Object de uno de los documentos (“_id”) ingresado en la ruta de navegación dentro de Postman, así: ‘http://localhost:8080/inventario/624f16cd37405467c4580f5’. Esto anterior, permite hacer una búsqueda interna del número identificador del documento (“_id”) y al momento de coincidir, devuelve el documento correspondiente en formato JSON.
DELETE
Ahora, se tiene el método DELETE en el que también se debe ingresar en la ruta, el número identificador del documento para poder enviar la petición al servidor: ‘http://localhost:8080/inventario/624f16cd37405467c4580f5’. Esto anterior, con el objetivo de realizar, de nuevo, una búsqueda del “_id”, pero al momento de coincidir, elimina ese documento de la colección de la base de datos.
En la figura anterior, se verifica mediante el método GET buscando por “_id”, el servidor arroja una respuesta “null” (vacío). Con ello, se confirma que el documento ya no se encuentra dentro de la colección.
Al utilizar el método GET de manera general, sin número identificador en la ruta para obtener todos los documentos de la colección, se pueden identificar todos los documentos a excepción del que se acaba de eliminar haciendo uso del método DELETE.
PUT
Finalmente, para poder actualizar información y acceder a cualquier dato de algún documento de la colección almacenada en la base de datos, el cliente envía una petición al servidor en donde se hace uso del método PUT. Este, también recibe como instrucción de búsqueda del documento, su número identificador (“_id”) y al momento de coincidir con el que se encuentre registrado en la base de datos, el servidor arroja toda la información que estaba almacenada para ese documento, es decir, se obtienen las llaves: “Fecha”, “Medicamento” y “Stock”, donde sus respectivos valores son campos editables.
Al enviar la petición, el servidor responde con un mensaje de “ok”, para validar que fue exitosa la edición. Para este caso, se realizó cambio del Stock de 100 a 34.
En esta imagen, mediante el método GET por búsqueda de “_id”, se obtiene el documento que fue editado anteriormente. Allí, se verifica que el valor de la llave “Stock” se encuentra modificada en comparación a como se encontraba inicialmente.
Comentarios
Publicar un comentario