batch
Para ejecutar varios métodos en una solicitud, utilice el método core/batch.
Endpoint
La solicitud se puede enviar de dos formas. En la primera forma, el parámetro params contiene una matriz de métodos:
svc=core/batch¶ms=[
{
"svc": "<text>",
"params": {}
}
]
En la segunda forma, el parámetro params contiene un objeto, lo que además permite utilizar el parámetro flags:
svc=core/batch¶ms={
"params": [{
"svc": "<text>",
"params": {}
}],
"flags": <uint>
}
Parámetros
Los parámetros svc y params se especifican para cada método de la matriz. El parámetro flags se especifica para la solicitud en su conjunto.
| Nombre | Descripción |
|---|---|
| svc | Nombre del método que se debe ejecutar, por ejemplo, core/search_items. |
| params | Parámetros del método. |
| flags | Máscara de bits que puede incluir el siguiente flag:
0 para ejecutar todos los métodos. El parámetro solo está disponible en la segunda forma de la solicitud. Si lo omite en esta forma, la solicitud devuelve el error 4. |
Resultado devuelto
Si la solicitud se completa correctamente, el resultado se devuelve con el siguiente formato:
[
{ /* Objeto con datos si no hay errores. */
...
},
{ /* Código de error si se ha producido un error. */
"error": <int>
},
...
]
Cada elemento de la matriz es el resultado del método correspondiente, sin ningún contenedor adicional. Si un método devuelve un error, su elemento contiene el código de error de ese método.
Si el parámetro
flagsincluye el flag0x01 (1)y uno de los métodos devuelve un error, todos los métodos que siguen a este devuelven el código de error 10.
Códigos de error
La solicitud en sí puede devolver los siguientes códigos de error:
| Código | Descripción |
|---|---|
| 4 | Parámetros de entrada incorrectos. Esto sucede en uno de los siguientes casos:
|
| 6 | El resultado devuelto es demasiado grande. |
Un método concreto puede devolver su propio código de error en su elemento de la matriz. Además de los códigos del propio método, son posibles los siguientes códigos:
| Código | Descripción |
|---|---|
| 2 | Nombre de método incorrecto en el parámetro svc. |
| 10 | El método no se ejecuta. Esto sucede en uno de los siguientes casos:
|
Ejemplos
Todos los ejemplos que se muestran a continuación envían los mismos dos métodos: el primero se refiere al elemento con el ID 1004, al que el usuario no tiene derechos de acceso, y el segundo obtiene las propiedades del recurso con el ID 1003. Agregue a cada solicitud el parámetro sid con el identificador de su sesión.
Ejecución de todos los métodos a pesar de un error
En la primera forma, el parámetro params contiene solo la matriz de métodos, por lo que no hay dónde especificar el parámetro flags. Se ejecutan todos los métodos.
svc=core/batch¶ms=[
{
"svc": "core/search_item",
"params": {
"id": 1004,
"flags": 1
}
},
{
"svc": "core/search_item",
"params": {
"id": 1003,
"flags": 1
}
}
]
La segunda forma da el mismo resultado si el valor del parámetro flags es 0.
svc=core/batch¶ms={
"params": [
{
"svc": "core/search_item",
"params": {
"id": 1004,
"flags": 1
}
},
{
"svc": "core/search_item",
"params": {
"id": 1003,
"flags": 1
}
}
],
"flags": 0
}
Respuesta:
[
{
"error": 7
},
{
"item": {
"nm": "Resource",
"cls": 3,
"id": 1003,
"mu": 0,
"uacl": 19826928009763
},
"flags": 1
}
]
El error del primer método no afecta al segundo.
Detención de la solicitud después del primer error
Para detener la ejecución después del primer error, utilice la segunda forma de la solicitud y especifique el flag 0x01 (1). Los métodos son los mismos, pero ahora el segundo no se ejecuta y devuelve el error 10.
svc=core/batch¶ms={
"params": [
{
"svc": "core/search_item",
"params": {
"id": 1004,
"flags": 1
}
},
{
"svc": "core/search_item",
"params": {
"id": 1003,
"flags": 1
}
}
],
"flags": 1
}
Respuesta:
[
{
"error": 7
},
{
"error": 10
}
]