Skip to content

chriscarsam/foro-alura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

209678377-70b50b21-33de-424c-bed8-6a71ef3406ff Challenge ONE | Back End | Foro Alura

En este desafío, vamos a implementar a nivel de back end (CRUD) el proceso de un foro, y para eso crearemos una API REST 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
  • Documentación con Swagger
  • Generar un token usando JWT
  • Autenticación con JWT

Definición de foro

Un foro es una comunidad en línea que facilita la comunicación y el intercambio de conocimientos entre usuarios interesados en temas específicos.

⬇️ Repositorio Base Alura

https://github.com/alura-challenges/challenge-one-foro-alura

📃 Challenge ONE - API REST - Spring 1

🔹Diagrama de base de datos:

Link: https://github.com/chriscarsam/foro-alura/tree/master/src/main/resources/db/migration diagrama_foro_api

🔹Registro de un nuevo tópico

  La API debe tener un endpoint para el registro de nuevos tópicos y debe aceptar solicitudes POST para el URI /topicos.

[ POST ] http://localhost:8080/topicos
{
	"titulo": "Laravel 8",
	"mensaje": "Consulta de Laravel 8 conexipon con PostGrestSQL",	
	"status": "NO_RESPONDIDO",
	"usuario":{
		"id": "1"}
	,
	"curso": {
		"id": "2"
	}
}

Screenshot from 2023-05-28 17-32-31

🔹Mostrar todos los tópicos

  La API debe tener un endpoint para la lista de todos los tópicos y debe aceptar solicitudes GET para el URI /topicos.

[ GET ] http://localhost:8080/topicos?size=10

Screenshot from 2023-05-28 17-33-56

🔹Detallando un tópico

  La API debe tener un endpoint para la lista de todos los tópicos y debe aceptar solicitudes GET para el URI /topicos/{id}.

[ GET ] http://localhost:8080/topicos/3

Screenshot from 2023-05-28 17-34-22

🔹Actualizar un tópico

  La API debe tener un endpoint para el registro de nuevos tópicos y debe aceptar solicitudes PUT para el URI /topicos/{id}.

[ PUT ] http://localhost:8080/topicos
{
	"id": 3,
	"titulo": "PHP 7",
	"mensaje": "Consulta de PHP 7 Conexión con mysql"
}

Screenshot from 2023-05-28 17-36-08

🔹Eliminar un tópico

  La API debe tener un endpoint para la eliminación de tópicos y debe aceptar requisiciones DELETE para el URI /topicos/{id}.

[ DELETE ] http://localhost:8080/topicos/3

Screenshot from 2023-05-28 17-37-05

📃 Challenge ONE - API REST - Spring 2

🔹Documentación con Swagger

  Swagger es una herramienta extremadamente ventajosa para tu API, ya que ofrece una interfaz fácil amigable y accesible, así como una forma de documentación automática, generada simultáneamente con el desarrollo de la API.

[ URL ] http://localhost:8080/login](http://localhost:8080/swagger-ui/index.html#/

Screenshot from 2023-06-06 17-23-44

🔹Generar un token usando JWT

  Para agregar mayor seguridad a tu aplicación, una opción muy ventajosa es requerir tokens para la autenticación.

[ POST ] http://localhost:8080/login
{
	"email": "[email protected]",
	"password": "123456"
}

Screenshot from 2023-05-29 13-13-42

🔹Autenticación con JWT

  Una vez que se genera el token con JWT, será necesario usarlo para autenticar el proceso de registros, eliminación, actualización.

{
	"jwTtoken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyQGVtYWlsLmNvbSIsImlzcyI6ImZvcm8gYXBpIiwiaWQiOjEsImV4cCI6MTY4NTMzMDIwNX0.Lnu4RX-8V91svB4zguSP9Z34HVDSe__sQkp-Hqe9UXQ"
}

  Endpoints


Endpoint Método Acceso Descripción
/login POST Público Genera par de tokens
/topicos GET Público Mostrar todos los tópicos creados
/topicos/{id} GET Público Mostrar un tópico específico
/topicos POST Privado/Protegido Crear un nuevo tópico
/topicos PUT Privado/Protegido Actualizar un tópico
/topicos/{id} DELETE Privado/Protegido Eliminar un tópico

Screenshot from 2023-06-06 18-07-14

📚 Tecnologías

📝 Dependencias utilizadas

📝 Estructura del proyecto

Link: https://github.com/chriscarsam/foro-alura/tree/master/src/main/java/org/sam/foro/api Screenshot from 2023-05-28 20-27-12

📝 Commits realizados:

Link: https://github.com/chriscarsam/foro-alura/commits/master


insignia ChristianSam

About

Challenge Back End - API FORO

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages