API externa¶
Resumen¶
Esta página describe la API externa basada en Open Collaboration Services: cómo registrar métodos, devolver datos y lanzar excepciones, la autenticación, el formato XML o JSON de la salida, los códigos de estado y la política de cambios y retrocompatibilidad. Está dirigida a quienes desarrollan apps que exponen datos a terceros.
Fuente: documentación de Nextcloud, «developer_manual/server/externalapi», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Introducción¶
La API externa de APS Conecta Gestión permite a desarrolladores externos acceder a los datos que proporcionan las apps de APS Conecta Gestión. APS Conecta Gestión sigue la especificación Open Collaboration Services.
Uso¶
Registrar métodos¶
Los métodos se registran en appinfo/routes.php devolviendo un
array con los metadatos del endpoint.
<?php
return [
'ocs' => [
// Apps
['name' => 'Bar#getFoo', 'url' => '/foobar', 'verb' => 'GET'],
],
];
Devolver datos¶
Una vez que el backend de la API ha encontrado la URL, se ejecuta la función invocable definida en BarController::getFoo. El AppFramework se encarga de que los parámetros enviados se pasen al método según su declaración.
Hay que extender OCP\AppFramework\OCSController del AppFramework.
Las funciones deben devolver entonces un OCP\AppFramework\Http\DataResponse. El
AppFramework se encarga después de dar el formato adecuado a la respuesta.
Excepciones¶
Para lanzar una excepción al usuario en la respuesta OCS, se puede lanzar una
OCP\AppFramework\OCS\OCSException. Se pueden establecer el mensaje y el código.
Hay 3 excepciones de uso frecuente ya disponibles:
OCSBadRequestExceptionOCSForbiddenExceptionOCSNotFoundException
Autenticación y conceptos básicos¶
Las peticiones al endpoint OCS a menudo tienen que estar autenticadas.
curl -u user:password https://example.com/ocs/v2.php/apps/yourapp/foobar
Salida¶
La salida es XML de forma predeterminada. Para obtener JSON, agregar esto a la URL:
?format=json
O establecer la cabecera Accept adecuada:
Accept: application/json
La salida de la aplicación va envuelta en un elemento data:
XML:
<?xml version="1.0"?>
<ocs>
<meta>
<status>ok</status>
<statuscode>200</statuscode>
<message/>
</meta>
<data>
<!-- data here -->
</data>
</ocs>
JSON:
{
"ocs": {
"meta": {
"status": "ok",
"statuscode": 200,
"message": null
},
"data": {
// data here
}
}
}
Códigos de estado¶
El código de estado puede ser cualquiera de los siguientes números:
200 - correcto
996 - error del servidor
401 - no autorizado
404 - no encontrado
999 - error desconocido
Cambios en la API y retrocompatibilidad¶
Se procura mantener la API lo más estable posible para no romper las apps de terceros. Antes de que se permita eliminar una API, debe marcarse como obsoleta durante al menos 3 años (9 versiones de APS Conecta Gestión) antes de eliminarla.
Los cambios en la API deben discutirse en un issue de GitHub del repositorio del servidor de Nextcloud. Una pull request es más que bienvenida.
Nota
Los problemas de APS Conecta Gestión, de sus aplicaciones y de su instalación se informan en los issues de la suite APS-Conecta: Errores conocidos reúne los de todos sus repositorios. El centro de incidencias citado arriba es el de Nextcloud, para fallos del software original.