...
...
Métodos HTTP
GET
Obtiene los registros.
...
Elimina los registros.
PUT
Edita los registros.
Parámetros
Los parámetros que recibirán la URL son:
model
Cadena con el nombre del modelo. Perteneciente a la ruta de la URL esta será el hincapié para mostrar los resultados; model es el nombre de la tabla que se encuentra en la base de datos; no todas las tablas estarán habilitadas para operarlas.
id
El identificador del modelo. Entero positivo mayor a uno y llave primaria del modelo. Perteneciente a la ruta de la URL y en algunas operaciones será opcional y otras no será tomado en cuenta.
type
Una cadena con el tipo de consulta de registros que se necesite mostrar. Se ingresará en el query de la URL. Aquí, se encuentran el tipo árbol, el lineal y el normal. Este campo es requerido cuando el método de la solicitud sea GET.
...
‘normal’: Tipo normal. Mostrará las columnas del modelo y las relaciones adyacentes.
columns
Un conjunto de cadenas con los nombres de las columnas a mostrar. Se Parametriza en el query de la URL cuando el método de la solicitud es GET. Necesita de las siguientes condiciones y estructuras para operar:
...
{String} model.column [ , … ]
relations
Un JSON con las relaciones que se unirán con el modelo. Se Parametriza en el query de la URL cuando el método de la solicitud es GET. Pueden tener uno a más niveles de relaciones solo siguiendo la siguiente estructura:
...
Si el valor de la relación es vacío se pondrán todas las columnas disponibles.
page
{Integer}: > = 1;
El número de página. Se Parametriza en el query de la URL cuando el método de la solicitud es GET
y cuando el id en la ruta de la URL no exista. Por defecto asignado a 1.
searchText
{String}
Texto de búsqueda. Buscará en el contenido de las columnas. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista.
Buscará en el contenido de las columnas de model.
Si el tipo de consulta de registros es normal, podrá realizar búsquedas a las columnas de las relaciones también.
Por defecto, no realizará búsquedas hasta asignarle un valor.
sizePerPage
{Integer}: >= 1.
Tamaño por página. Comúnmente llamado Límite. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Limita la cantidad de registros para cada página o visualización. Por defecto asignará 50.
sortName
{String|Integer}: {string} column || {string} model.column || {Integer} numberColumn
...
Se utiliza el nombre de la columna que exista en model.
Se utiliza, adicionalmente, las columnas añadidas en las relaciones, siempre y cuando el tipo de consulta sea normal.
Número entero de la posición de la columna. Por defecto se elegirá la primera columna escogida. La posición de las columnas se elige a partir de cómo se hayan ingresado primero en el parámetro columns y, si el tipo de consulta de registros es normal, tomará en cuenta la ocurrencia de las columnas en el parámetro relations.
En el caso de que el tipo de consulta de registros sea normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades).
sortOrder
{String}: ‘asc’|| ‘desc’
Cadena con la orientación del ordenamiento de los registros. Ascendente o Descendentemente. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Por defecto asignará asc
enabled
{Boolean}: true || false || null
...
true: Solo habilitados.
false: Inhabilitados.
null: Se mostrarán todos.
deleted
{Boolean}: true || false || null
...
true: Solo eliminados.
false: No eliminados.
null: Se mostrarán todos.
grouping
{Array}
Agrupación de los registros. Conjunto de cadenas con las columnas a agrupar. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Por defecto es null. Utiliza la siguiente estructura para cada una de las cadenas:
...
En el caso de que el tipo de consulta de registros sea normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades).
conditions
Una cadena para realizar filtrados condicionales dentro del modelo y sus relaciones. Si el parámetro no tiene información no tendrá condiciones. conditions disponible para el método GET y cuando el id en la ruta de la URL no exista. Debe cumplir la siguiente estructura:
...
(model.column [ = | != ] value) [AND|OR] […]
resources
Estructura en formato JSON con la información de las columnas a editar y crear en el modelo.
...
{Object} column: value [, …]
[, …]
}
ids
Estructura JSON con identificadores para eliminar en el modelo. Para el método DELETE se necesitará de este parámetro en body de la solicitud. Si la URL proporcionada posee el id y el método es DELETE, no se tomará en cuenta dicho JSON.
ids tendrá un conjunto de valores enteros (ID).
Variables
simpleRelation = relation
simpleRelation será la relación de nivel 1, es decir que no será multinivel.
complexRelations = relation [ .internalRelationship [ .deepInternalRelationship … ] ] complexRelation serán las relaciones de nivel n, es decir serán multinivel. Se necesita de la relación directa con el modelo y luego, separados por puntos, se irá profundizando con las demás relaciones de cada uno de las relaciones anteriores.
Diccionario
column = La columna del modelo o relación.
model = Nombre del Modelo.
relation = El nombre de la relación que dependerá de cada uno de los modelos y del tipo de relación, es decir, si son uno a muchos, muchos a uno, y muchos a mucho. Las relaciones uno a mucho, se representarán en plural, al igual que muchos a muchos, mientras que de muchos a uno serán en singular.
internarRelationship = Cadena con el nombre de la relación que se relaciona con la anterior.
deepInternalRelationship = Cadena con el nombre de la relación que se relaciona aún más con la anterior.
numberColumn = Número entero de la posición de la columna. La posición de las columnas se elige a partir de cómo se hayan ingresado primero en los select de la consulta.
value = El contenido de, por lo general, una llave, un array o variable.
Estructura
La estructura del API será de la siguiente manera
GET
{model}/
type
columns
relations
page
searchText
sizePerPage
sortName
sortOrder
enabled
deleted
grouping
conditions
{model}/{id}
type
columns
relations
DELETE
{model}/
ids
{model}/{id}
PUT
{model}/ || {model}/{id}
resources
POST
{model}/
resources
{service}/{name}
Relaciones
Presentaremos el mapa de cómo los modelos se relacionan con otros modelos.
...