Skip to content

CesarAngelesR/ForoAlura_API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

▶️ API REST | Foro Alura

📑 Indice:


📝 Descripción del Proyecto:

API Rest Foro Alura. El foro Alura es un lugar donde todos los alumnos de la plataforma Alura pueden colocar sus preguntas sobre determinados cursos, este mágico lugar está lleno de mucho aprendizaje y de colaboración entre alumnos, profesores y moderadores.

Esta API replica a nivel de back-end este proceso usando Spring.

Nuestra API va a centrarse específicamente en los tópicos, y debe permitir a los usuarios:

  • Crear un nuevo tópico
  • Mostrar todos los tópicos creados
  • Mostrar un tópico específico
  • Actualizar un tópico
  • Eliminar un tópico
  • Es lo que conocemos comúnmente como CRUD (CREATE, READ, UPDATE, DELETE).

Asimismo, se implementa un mecanismo de autenticación en la API, para que solo los usuarios autenticados puedan interactuar con ella.


📈 Estado del proyecto:

🚧 Proyecto en construcción 🚧

Proyecto inicial, se agregaran mas funcionalidades en el futuro.


✅ Características de la aplicación y demostración:

  • Inicio de documentación: Para la documentación de la API utilizaremos Swagger UI V2.1.0. Ingresamos a la dirección para iniciar una vez este corriendo el servidor de Spring Boot: http://localhost:8080/swagger-ui/index.html

  • Hello: Para verificar que la API se encuentra ejecutándose hacemos click en "GET/hello" del "hello-controller".

Una vez hecho click se desplegara informacion sobre el método "GET/hello" del "hello-controller" y en ella haremos click en el botón "Try it out".

Una vez hecho click se nos presentara un botón azul tamaño grande con el nombre "Execute" en el cual haremos click para ejecutar el método.

Se deplegara el mensaje en Response body "Hello world from Mexico!" asimismo, se presentaran los botones "Execute", "Clear" y "Cancel". "Execute" volverá a ejecutar el método, "Clear" regresa al estado anterior al método y "Cancel" regresara al botón "Try it out"

  • Login: Para poder acceder a los métodos del "topicos-controller" es necesario que hagamos "login" para ello en el "autenticacion-controler" hacemos click en "POST/login"

Se desplegara información sobre el método y en ella haremos click en el botón "Try it out".

Se habilitara el Request body donde colocaremos el email y contraseña en formato JSON que por origen es:

{ "email": "admin@admin", "contrasena": "123456" }

Asimismo se habilitarán los botones "Execute", "Cancel" y "Reset". El boton "Cancel" nos regresara el botón "Try it out" y el botón "Reset" reiniciará el Request body. De click en "Execute" una vez se ingresen los datos requeridos de Request body para ejecutar el método.

Se desplegara el Response body con información dentro la cual es un JWT Token el cual debemos de "copiar unicamente" lo que se encuentra entre comillas.

Posteriormente hacemos click en el botón "Authorice" que se encuentra del lado derecho de la pantalla en la parte superior.

Se presentara un cuadro de dialogo en el cual pegaremos el JWT Token dentro del cuadro "Value" y hacemos click en "Authorize". Se colocará un cuadro de dialogo donde se podrá hacer "Logout" para salir o "Close" para cerrar el cuadro de dialogo y continuar con al documentación. Hacemos click en close.

  • Registrar tópico: Una vez hecho el "login" documentaremos cada uno de los métodos del "topicos-controller" haremos click en "Post/topicos" donde registraremos un nuevo tópico.

Se desplegara la información del método "Post/topicos" y haremos click en "Try it out" para habilitar el Request body.

Se desplegara información y también se habilitara el Request body donde mediante formato JSON solicitara información para el registro del tópico. La información que solicita es:

{ "titulo": "Se coloca en este campo el titulo del tópico", "mensaje": "En este campo se coloca el mensaje que se desea colocar", "autor": "Se coloca el nombre de la persona que registra el tópico", "curso": "Se coloca el curso en el cual se tiene la duda o sugerencia. Es importante informar que este campo es de selección múltiple y unicamente se pueden colocar 4 cursos: Front_End, Back_End, MySQL, Soft_Skills" }

Una vez se llenen los requerimientos solicitados del método se da click en el botón "Execute" para ejecutar el método.

En caso de omitir alguno de los campos solicitados se regresara un mensaje de error 400 en el Response body informando que el campo no debe ser nulo.

Ejecutando correctamente el método, nos arrojara un código 201 y el Response body nos dará un mensaje con el registro realizado incluyendo el "Id", la fecha de crecion y con el Status quedando finalmente el tópico registrado.

El campo Status también es de selección múltiple y se encuentra como Enum: NO_RESPONDIDO, NO_SOLUCIONADO, SOLUCIONADO, CERRADO. Al momento de registrar se pondrá como "NO_RESPONDIDO" en automático y posteriormente al momento de editar el tópico sera posible cambiarlo.

El botón "Clear" limpia el Request body. El botón "Cancel" cierra el Request body y el botón Reset regresa el método a su estado posterior y regresa el botón "Try it out".

  • Edición de tópico: Para editar un tópico guardado hacemos click en "PUT/topicos" posteriormente hacemos click en el botón "Try it out" para habilitar el Request body.

En el Request body debemos de colocar necesariamente el numero de "Id" para indicar el tópico que vamos a modificar. El los campos "Status" y "Curso" debemos considerar que son Enum y que unicamente se tiene que colocar alguno de las opciones disponibles.

Status: Front_End, Back_End, MySQL, Soft_Skills.

Curso: NO_RESPONDIDO, NO_SOLUCIONADO, SOLUCIONADO, CERRADO.

En el JSON del Request body vamos ca colocar el "Id" y el campo a modificar, ejemplo vamos a modificar "titulo" y "mensaje" del tópico con "Id" no. 4.

{ "id": 5, "titulo": "¿Duda sobre Querys de MySQL", "mensaje": "¿Las Querys de MySQL también se escriben en mayúsculas en el archivo SQL del migrate?" }

y damos click en "Execute" para ejecutar el método.

Nos aparecerá un código 200 y en el Response body el tópico con las modificaciones realizadas.

  • Lista de Tópicos: Para listar los tópicos registrados hacemos click el "GET/topicos" y hacemos click en "Try it out" para habilitar el Request body. En el Request body unicamente colocaremos en el JSON una llave abriendo y otra llave cerrando "{}" y damos click en "Execute".

Nos aparecerá un código 200 y en el Response body una lista en formato JSON con la información de todos los tópicos registrados.

  • Búsqueda de tópico por Id: Para hacer una búsqueda por "Id" hacemos click en "GET/topicos{id}" y posteriormente en "Try it out" para habilitar el Request body y colocar el "Id" y hacer click en "Execute" para ejecutar el método. En el ejemplo buscamos el tópico con "Id" no. 5.

No aparecerá un código 200 y en el Response body nos aparece el tópico seleccionado en el "Id".

  • Eliminar tópico: Para eliminar un tópico damos click en "DELETE/topicos{id}"y posteriormente en "Try it out" para habilitar el Request body y colocar el "Id" y hacer click en "Execute" para ejecutar el método. En el ejemplo eliminaremos el tópico con "Id" no. 5.

Nos dará un código 200 con un "OK" lo cual indica que se elimino el registro.

Si visualizamos la tabla tópicos veremos que fue eliminado el tópico con "Id" no. 5.


🖥️ Tecnologías Utilizadas:

  • Java
  • Eclipse
  • Spring Boot
  • MySql
  • Spring Security
  • Spring Framework
  • Lombok
  • Flyway
  • Auth0
  • Springdoc Swagger

👷 Personas Contribuyentes:


Cesar Angeles Rodriguez

Eric Monné

Génesys Rondón

Releases

No releases published

Packages

No packages published

Languages