RESTful
OpenKM tiene una API completa expuesta mediante REST. Esto significa que puede llamar a cualquiera de estos métodos de la API desde cualquier lenguaje de programación, como Java, PHP o Python, entre otros. Esta funcionalidad permite crear un cliente a medida o integrarse con aplicaciones de terceros como un CRM o un CMS.
En casi todos los ejemplos verá parámetros llamados “docId”, “fldId” o “nodeId”. El valor de este parámetro puede ser un UUID o una ruta de nodo válidos.
Ejemplo de uso
Sección titulada «Ejemplo de uso»Para probar estos métodos de la API puede utilizar una biblioteca de cliente HTTP o cualquier cliente REST que facilite este proceso. O, simplemente, puede utilizar la aplicación de línea de comandos curl. Por ejemplo, puede listar las carpetas hijas:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ http://localhost:8080/OpenKM/services/rest/folder/getChildren?fldId=3492d662-b58e-417c-85b6-930ad0c6c3cfEl resultado es:
{"folders": {"folder": [ { "author":"okmAdmin", "created":"2013-07-29T12:09:11+02:00", "path":"\/okm:root\/alfa", "permissions":15, "subscribed":false, "uuid":"6b3e0531-96a9-4675-bb82-215b715b20ca", "hasChildren":false }, { "author":"okmAdmin", "created":"2013-07-24T22:56:20+02:00", "path":"\/okm:root\/beta", "permissions":15, "subscribed":false, "uuid":"41f1bace-58b4-41a9-b43e-dffc1ac9a954", "hasChildren":false} ] }}En este caso puede ver el resultado en formato JSON. Si necesita una salida en XML, puede forzarla mediante la cabecera ’Accept:
$ curl -u okmAdmin:admin -H "Accept: application/xml" \ http://localhost:8080/OpenKM/services/rest/folder/getChildren?fldId=3492d662-b58e-417c-85b6-930ad0c6c3cfEl resultado en XML es:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><folders> <folder> <author>okmAdmin</author> <created>2013-07-29T12:09:11+02:00</created> <path>/okm:root/alfa</path> <permissions>15</permissions> <subscribed>false</subscribed> <uuid>6b3e0531-96a9-4675-bb82-215b715b20ca</uuid> <hasChildren>false</hasChildren> </folder> <folder> <author>okmAdmin</author> <created>2013-07-24T22:56:20+02:00</created> <path>/okm:root/beta</path> <permissions>15</permissions> <subscribed>false</subscribed> <uuid>41f1bace-58b4-41a9-b43e-dffc1ac9a954</uuid> <hasChildren>false</hasChildren> </folder></folders>Este es un cliente Java para la misma llamada:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.Authenticator;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.PasswordAuthentication;import java.net.URL;
public class JavaRestClient { public static void main(String[] args) throws Exception { try { String fldUuid = "3492d662-b58e-417c-85b6-930ad0c6c3cf"; URL url = new URL("http://localhost:8080/OpenKM/services/rest/folder/getChildren?fldId=" + fldUuid); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json");
Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("okmAdmin", "admin".toCharArray()); } });
if (conn.getResponseCode() == 200) { BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); System.out.println("Output from Server .... \n"); String output;
while ((output = br.readLine()) != null) { System.out.println(output); } } else { System.err.println("Failed : HTTP error code : " + conn.getResponseCode()); }
conn.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}Ejemplos de carpetas
Sección titulada «Ejemplos de carpetas»Crear una carpeta nueva:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ -X POST -H "Content-Type: application/json" -d '/okm:root/newfolder' \ http://localhost:8080/OpenKM/services/rest/folder/createSimpleEjemplos de documentos
Sección titulada «Ejemplos de documentos»Para crear un documento, debemos proporcionar los datos binarios del documento:
$ curl -u okmAdmin:admin -H "Accept: application/json" \ -X POST -F docPath=/okm:root/newDoc.txt -F content=@newDoc.txt \ http://localhost:8080/OpenKM/services/rest/document/createSimpleO también desde un formulario HTML:
<html> <body> <form method="POST" enctype="multipart/form-data" action="http://localhost:8080/OpenKM/services/rest/document/createSimple"> Select file: <input type="file" name="content" size="45"/><br/> Select path: <input type="text" name="docPath" value="/okm:root/newDoc.txt"/><br/> <input type="submit" value="Upload" /> </form> </body></html>