API REST de gestion de inventario desarrollado en SpringBoot, implementando SpringSecurity y JWT para la gestion de autenticacion. El frontend del mismo se puede encontrar en: API-Frontend.
El proyecto fue desarrollado utilizando las siguientes tecnologias:
- JavaSE-1.8
- SpringBoot 3.4.5
- Spring Security 6.2.0
- Listado de dependencias en
pom.xml
Las instrucciones de instalacion son especificamente para el entorno en el que fue desarrollado el proyecto (Eclipe IDE).
- Desde Eclipse Marketplace instale Spring Tools (aka Spring Tool Suite) 4.30.0.
- MS SQL Server 2019.
- SQL Server Management Studio 20 para facilitar la gestion de la base de datos.
- Alternativamente se puede utilizar otra base de datos, pero se debera configurar la dependencia en el
pom.xmlasi como la configuracion enapplication.properties.
- Cree un nuevo "Spring Starter Project" en Eclipse.
- Asegurese de que contenga los siguientes parametros:
- Type: Maven
- Packaging: Jar
- Java Version: 17
- Language: Java
- Group:
com.dashboard - Package:
com.dashboard
- Navegue a la carpeta del proyecto y reemplace el contenido por el que se encuentra en este repositorio.
Nota: Ajuste las configuraciones del usuario y contraseña enapplication.propertiessegun lo configurado en MS SQL Server.
El proyecto contiene los queries utilizados en SQL Server en la carpetaSQLServerQueries, especificamente: - Un archivo
.txtpara flexibilidad de uso. - 5 archivos (del 0 al 4) enumerados por orden de uso.
Importante: El ultimo query debe ser ejecutado luego de ejecutarPOST registeren la coleccion de Postman para conferir los permisos administrativos al usuario recien registrado
Se incluye una coleccion de Postman (Outputs API.postman_collection.json) que puede ser descargada y cargada a Postman respectivamente para su ejecucion.
Nota: la coleccion cuenta con un script para manejar la autenticacion por lo que basta con darle run a la misma.
POST /registerEstructura esperada:
{
"name" : "name lastname",
"username" : "username",
"password" : "abc123"
} POST /loginEstructura esperada:
{
"username" : "username",
"password" : "abc123"
}Para todas las siguientes consultas la autenticacion es requerida:
| Parameter | Type | Description |
|---|---|---|
JWT token |
string |
Required. El token proporcionado al iniciar sesion |
GET /productos GET /productos/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del producto |
POST /productosEstructura esperada:
{
"name": "test",
"price": 5.99,
"tags": "",
"active": false
} POST /productos/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del producto |
DELETE /productos/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del producto |
GET /categorias GET /categorias/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id de la categoria |
POST /categoriasEstructura esperada:
{
"name" : "sample category",
"active" : true
} PUT /categorias/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id de la categoria |
DELETE /categorias/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id de la categoria |
Importante: para las siguientes consultas se debe estar autenticado como administrador.
GET /usuarios GET /usuarios/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del usuario |
POST /usuariosEstructura esperada:
{
"name" : "test user",
"username" : "sampleusername",
"password" : "12345"
} PUT /usuarios/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del usuario |
DELETE /usuarios/${id}| Parameter | Type | Description |
|---|---|---|
id |
Long |
Required. Id del usuario |