Herramientas de usuario

Herramientas del sitio


usu:smartweb:introduccion_a_smartwebdoc

¡Esta es una revisión vieja del documento!


Introducción a SmartWebDoc

SmartWebDoc es un servicio web que permite a páginas web o aplicaciones web acceder a los datos de Smart.

Instalación

Se instala preferiblemente en la misma red donde está instalada la base de datos de Smart, para que la lectura de los datos sea lo más rápido.

SmartWebDoc arquitectura

SmartWebDoc se puede instalar tanto en un servidor Windows como en uno con el sistema operativo Linux. Por lo tanto es posible instalarlo en el mismo servidor de la base de datos, aunque esto no es recomendable por motivos de seguridad.

Comunicación

Se puede configurar SmartWebDoc para que use el protocolo http o https, con el puerto que se desea. Por defecto se usa el puerto 8000.

Se accede al servicio con el método POST, pasando los datos en formato JSON.

  Method: POST
  URL: /services/IDocService/?format=json
  Query: format=json
  HeaderLine: POST /services/IDocService/?format=json HTTP/1.1
  Content:
{ "version" : "1.1", "method" : "Select", "params" :
["PROC_LEER_OBRAS", ["2016-03-01", "2016-03-31", "CL", "000999"]] }

El servicio web contesta con otro JSON:

  FirstHeaderLine: HTTP/1.1 200 OK
  Content:
{ "version" : "1.1", "result" :
[["16-00001", "OB000001", "Obra XYZ", "2016-03-31 00:00:00","99.99000", "ESP", "2016-09-27 00:00:00"],
 ["16-00002", "OB000002", "", "2016-03-31 00:00:00","1500.12000", "ESP", "2016-09-27 00:00:00"]] }

Protócolo JSON

Existen dos tipos de interfaz, Select y Raw. Ambos usan el formato JSON para pasar los datos.

JSON tipo "Select"

(ver ejemplo en el párrafo anterior)

En este caso, los datos JSON que recibe el servicio web tienen que llevar siempre el campo params. El valor de este campo es una matriz que contiene el nombre de un procedimiento de la base de datos (PROC_LEER_OBRAS) y los parámetros que se quiere pasar a este procedimiento (“2016-03-01”, “2016-03-31”, “CL”, “000999”).

El JSON de vuelta contiene una matriz de dos dimensiones con los registros que devuelve el procedimiento.

Esta manera de intercambio de datos permite total flexibilidad a la hora de acceder a la base de datos. Por el otro lado, quien accede al servico web necesita conocer la definición de los procedimientos que pretende utilizar.

Documentos, imagenes etc. que devuelve el servicio se codifican en base 64.

JSON tipo "Raw"

A continuación se muestra un ejemplo de una petición Raw al servicio SmartWebDoc:

{
  "version"  : "1.2",
  "metodo"   : "Raw",
  "opciones" : { "metaData":true },
  "comandos" :
  [
    {
      "sql":"select codigo, nombre from producto where upper(nombre) like :filtro rows 50",
      "params": { "filtro" : "PAN DE LECHE PACK%" }
    },
    {
      "sql":"update USUARIO set NOMBRE = :nombre where CODIGO = :codigo",
      "params": { "nombre" : "Smart", "codigo" : "SMART" }
    }
  ]
}

Se puede enviar una serie de comando, que se ejecutan dentro de una misma transacción. El resultado contiene un bloque por cada comando con el correspondiente resultado:

{
  "version": "1.2",
  "resultados": [
    {
      "estado": "OK",
      "metaData": {
        "CODIGO": {
          "tipo": "ftString",
          "etiqueta": "Código"
        },
        "NOMBRE": {
          "tipo": "ftString",
          "etiqueta": "Nombre"
        }
      },
      "datos": [
        {
          "CODIGO": "2003990",
          "NOMBRE": "PAN DE LECHE PACK-4"
        },
        {
          "CODIGO": "2009781",
          "NOMBRE": "PAN DE LECHE PACK-6"
        }
      ]
    },
    {
      "estado": "OK",
      "datos": []
    }
  ]
}

El formato Raw permite cualquier interacción con los datos, siempre dentro de los límites de seguridad que se explican a continuación.

Seguridad

El servicio web se conecta a la base de datos con un usuario con privilegios restringidos. Solo va a tener acceso a los datos imprescindibles para la aplicación web.

usu/smartweb/introduccion_a_smartwebdoc.1518685915.txt.gz · Última modificación: 2018/02/15 10:11 por stefan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki