AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Servicios web
  • Presentación
  • Principio de llamada a una función de un servicio web REST
  • Creación de un servicio web REST
  • Etapas a seguir
  • Etapa 1: Creación de un proyecto o configuración de proyecto cuyo tipo sea REST Webservice
  • Etapa 2: Creando una description de REST Webservice
  • Etapa 3: Creación de puntos de entrada
  • Etapa 3: Método 1: Creación manual de puntos de entrada
  • Composición de Resource (o sección URL)
  • Gestión de los códigos de respuesta en el código de procedimientos
  • Etapa 3: Método 2: automatic creación de puntos de entrada y procedimientos (métodos) para un archivo encontrado en el análisis
  • Probar un servicio web REST y depurarlo
  • Herramienta de prueba de Webservice: WDTestRest
  • Generación del servicio web REST
  • Despliegue de un servicio web REST
  • Despliegue de un servicio web
  • Caso especial: Despliegue de un servicio web y ejecución de su prueba en el equipo local
  • Llamada a una función REST mediante programación
  • Por ejemplo
  • Generación de la OpenAPI Definition
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Un servicio web REST es un programa alojado en un servidor que contiene funciones accesibles a través de peticiones HTTP.. Cada función (también llamada API o punto de entrada) corresponde a una ejecución de Process en el servidor.
Cada punto de entrada se caracteriza por:
  • en Resource,
  • un método HTTP (get, Post, PUT, ...).
Un servicio web REST puede contener puntos de entrada con URLs idénticas y métodos HTTP diferentes (que representan una acción diferente).
Los métodos HTTP disponibles son los siguientes:
  • OBTENGA la información get .
  • Post para crear.
  • PONER para modificar.
  • ELIMINAR para eliminar.
  • PARCHE para modificar.
  • HEAD a la información get .

Principio de llamada a una función de un servicio web REST

La llamada a una función de un servicio web REST se realiza a través de una Resource (URL).
Esta Resource representa por sí misma la naturaleza de la información utilizada así como su identificación. Los métodos HTTP (verbos) utilizados en la Address se usan para especificar el tipo de acción a realizar.
En la función, los códigos HTTP (2xx, 3xx, 4xx y 5xx) se utilizan para indicar el estado reporte de la función REST..
Por ejemplo, la siguiente Address:
http://server/Customers/10/Orders
representa la siguiente acción: "Recuperar la lista de pedidos del cliente nº 10".
En esta Address:
  • server representa el Address del servidor que aloja el servicio web REST.
  • Clientes indica que se utilizan datos sobre los clientes.
  • 10 representa el identificador de cliente a utilizar.
  • Pedidos indica que se utilizan datos sobre pedidos.
Esta petición HTTP se realiza a través del método get, lo que significa que los datos deben ser recuperados a cambio.
Creación de un servicio web REST

Etapas a seguir

Para crear un servicio web REST:
  1. Crear un proyecto o configuración de proyecto cuyo tipo sea REST Webservice.
  2. Crear una o más descripciones de REST Webservice. Un description de REST Webservice se utiliza para agrupar una lista de funciones para el mismo tema.
  3. En cada description, crear los puntos de entrada necesarios. Se pueden utilizar dos métodos para crear los puntos de entrada: Recordatorio: Un punto de entrada está hecho de:
    • una Procedure o un método WLanguage.
    • un método HTTP.
    • a Resource (URL section).
    • el formato de la solicitud y el formato de la respuesta.
  4. El servicio web puede ser generadas y desplegado.

Etapa 1: Creación de un proyecto o configuración de proyecto cuyo tipo sea REST Webservice

Para crear un proyecto de servicio web REST:
  1. Cree un nuevo proyecto:
    • Vaya a la página de inicio (Ctrl + <).
    • Haga clic en "Crear un proyecto"..
  2. En la creación del proyecto asistente:
    • Seleccione un proyecto "SOAP o REST Webservice.
    • Elija generar un servicio web REST.
  3. Finalice el asistente.
Para crear una configuración de proyecto de servicio web REST:
  1. En la pestaña "Proyecto", en el grupo "Configuración del proyecto", despliegue "Nueva configuración" y seleccione "Webservice".
  2. En la generación de la configuración del proyecto asistente, elija generar un REST Webservice.
  3. Finalice el asistente.

Etapa 2: Creando una description de REST Webservice

Recordatorio: Un description de REST Webservice se utiliza para agrupar una lista de funciones para el mismo tema.
Para crear una description de REST Webservice.
  1. En el panel "Project explorer", seleccione "description s of REST Webservices" y, a continuación, seleccione "New description of REST Webservice" en el menú contextual (botón derecho del ratón).
    Creación de un servicio web description
  2. Escriba el nombre del servicio web REST description y valídelo.
  3. El punto de entrada creación asistente se abre automáticamente.

Etapa 3: Creación de puntos de entrada

El punto de entrada REST Webservice creación asistente abre:
  • al crear una nueva description de REST Webservices.
  • en el panel "REST Webservice", en el grupo "Puntos de entrada", haciendo clic en "Nuevo"..

    Observación: El panel "REST Webservice" sólo está disponible cuando se muestra una description de REST Webservice en el editor.
Si el proyecto es associated con un análisis, la creación de puntos de entrada asistente propone seleccionar el método de creación de puntos de entrada:

Etapa 3: Método 1: Creación manual de puntos de entrada

En el resto de la asistente:
  1. Especificar el WLanguage global Procedure associated con el punto de entrada. Esta Procedure puede ser creada o puede ser seleccionada entre las Procedure globales existentes.
    Eligiendo la Procedure
  2. Pase a la etapa siguiente.
  3. Elija el método HTTP que representa la acción a realizar (get, PUT, ...).
    Elección del método HTTP
  4. Pase a la etapa siguiente.
  5. Definir la Resource (o sección URL) correspondiente al punto de entrada. Esta Resource puede incluir elementos estáticos o elementos Variable (parámetros).
    Recurso del punto de entrada
    Para más detalles, véase Composición de Resource.
  6. Pase a la etapa siguiente.
  7. Definir el formato de solicitud y el formato de respuesta. El estándar en REST es JSON pero hay otros formatos disponibles.
    • El formato de solicitud indica cómo se formatean los datos pasados durante la llamada REST.
      Formato solicitud
      Este formato puede ser el siguiente:
      • Formulario HTML,
      • JSON,
      • XML,
      • Texto (tipo MIME "Text/Plain"),
      • Binario (para imágenes, por ejemplo),
      • Variable (el formato es libre y debe especificarse mediante programación con Servicio webLeerMedirMedición).
    • Para una acción de POST, PUT o PATCH, tiene la capacidad de deserializar automáticamente los datos pasados en el parámetro de consulta en un parámetro de la Procedure associated con el punto de entrada:
      Deserialización
      • Marque "Deserializar el contenido automáticamente...".
        Atención: si la Procedure no tiene ningún parámetro definido, la casilla "Deserializar el contenido automáticamente..." no está activada.
      • Seleccione el nombre del parámetro de destino en la lista.
        Atención: Debe modificar el código de la Procedure para definir el parámetro y volver al punto de entrada creación asistente. Es imprescindible y obligatorio encasillar el parámetro Procedure. Los siguientes tipos de parámetros están permitidos en la Procedure: Buffer, cadena Ansi, estructura, array, objeto. Los tipos simples (entero, fecha, hora, booleano,...) no están permitidos..
        Para obtener más información, consulte REST WebServices: automatic deserialización de la solicitud.
    • El formato de respuesta indica cómo se formatean los datos recuperados de una llamada REST.
      Formato solicitud
      Este formato puede ser el siguiente:
      • Ninguno,
      • JSON,
      • XML,
      • Texto (tipo MIME "Text/Plain"),
      • Binario (para imágenes, por ejemplo),
      • Variable (el formato es libre y debe especificarse mediante programación con Servicio webWriteMIMEType).
  8. Pase a la etapa siguiente.
  9. Escriba la description del punto de entrada (texto libre).
  10. Validar.
La description de los diferentes puntos de entrada se muestra en el editor.
Formato solicitud

Composición de Resource (o sección URL)

La Resource está hecha de:
  • elementos estáticos.
  • variable elements.
  • parámetros comunes (opcional).
Los elementos estáticos representan los objetos utilizados.. Por ejemplo, "/Clientes" para los clientes de manipular.
En la creación Resource asistente, un elemento estático corresponde a un "Component fijo"..
Los elementos Variable identifican los recursos utilizados (un número de cliente, un número de pedido, ...). Por ejemplo "/Customers/{CustNum}" se utiliza para indicar el cliente utilizado a través de su número de cliente.
  • En la creación de URL asistente, un elemento Variable corresponde a:
    • una variable Component cuyo tipo es el parámetro Procedure. Este componente se recupera automáticamente en los parámetros de WLanguage Procedure asociado .
    • una variable Component cuyo tipo es programación, recuperada mediante programación con Parámetro de servicio web.
  • Un elemento variable se representa mediante la siguiente sintaxis: "{Nombre variable Component}".
    Por ejemplo, "/Clientes/10" se utiliza para manipular los clientes cuyo identificador es set a 10.
  • Es bastante común pasar los elementos de las variables de la URL durante una llamada a una función REST.
  • En el recurso (URL) del punto de entrada, cada componente variable de tipo de programación corresponde a un parámetro que se pasa al WLanguage Procedure associated con el punto de entrada.
  • Un elemento Variable se representa con un nombre al definir el Address del punto de entrada en el editor. Para un componente variable de tipo programación, este nombre debe ser idéntico al nombre del parámetro en el WLanguage Procedure associated con el punto de entrada.
    En tiempo de ejecución, el valor pasado en la Resource (URL) será recuperado y colocado en la Variable. Este nombre distingue entre mayúsculas y minúsculas. Por lo tanto, es muy importante utilizar el mismo nombre en el procedimiento y en la Resource (o a la inversa), de lo contrario se produce un error en tiempo de ejecución.
Tienes la capacidad de combinar varios elementos estáticos y varios elementos de Variable. Por ejemplo:
  • "/Customers/{CustomerID}/Invoices" para recuperar las facturas de un cliente identificado por su CustomerID..
  • "/Proveedores/{SupID}/Productos/{ProdRef}" para recuperar el producto identificado por "ProdRef" para el proveedor identificado por "SupID"..
La sección de parámetros comunes le permite get:
  • una sección de Resource idéntica a todos los puntos de entrada. Por lo tanto, no hay necesidad de copiar sistemáticamente esta sección de Resource en cada punto de entrada. La modificación se realiza en un solo lugar.
  • un Prologue Procedure que se llama antes de ejecutar la función associated con el punto de entrada del servicio web (para obtener más detalles, consulte Prólogo Procedure 030002f002300 ). Este tipo de Procedure puede, por ejemplo, permitir que se compruebe una autenticación Token durante la llamada a cada punto de entrada. El Prologue Procedure es un Procedure sin parámetros. Esta Procedure debe regresar:
    • True para continuar y ejecutar el procedimiento asociado al punto de entrada.
    • False para detener la llamada y NO ejecutar el procedimiento asociado al punto de entrada. En este caso, debe utilizar Servicio webWriteHTTPCode para especificar el código de estado de la respuesta (4XX o 5XX).
Consejo: La Definition de parámetros comunes puede ser usada para manejar diferentes versiones de REST Webservice. Por ejemplo, puede utilizarse un parámetro común denominado "V1. Al crear otra versión del servicio web, basta con cambiar "V1" por "V2" para modificar la Resource (URL) de todos los puntos de entrada.
Para modificar los parámetros comunes, vaya a la pestaña "REST webservice", grupo "Opciones", y seleccione "description"..

Gestión de los códigos de respuesta en el código de procedimientos

El código de los procedimientos de WLanguage utilizados para los Webservices REST debe gestionar informes de estado que indiquen si la función se ha ejecutado correctamente o no.
Por convención, en un servicio web REST, los informes de estado de ejecución se devuelven utilizando los códigos de respuesta HTTP. Los códigos de respuesta HTTP se clasifican en familias:
  • Los códigos 2xx corresponden a acciones exitosas.
  • Los códigos 3xx corresponden a errores de redirección.
  • Los códigos 4xx corresponden a errores del cliente (método HTTP incorrecto, formato de datos enviado incorrecto, etc.).
  • Los códigos 5xx corresponden a errores del servidor (error interno de WLanguage Procedure, etc.)
El código de respuesta es devuelto por Servicio webWriteHTTPCode.
Ejemplos de códigos de respuesta utilizados:
  • Pedir la creación de un cliente a través del método HTTP Post. Esta petición fue un éxito: el código 201 será devuelto.
  • Solicitar la eliminación de un cliente mediante el método DELETE. Esta petición falló porque la base de datos devolvió un error de integridad.: el código 500 será devuelto así como un mensaje de explicación.
  • Pedir que se encuentre un producto pasando una reference como parámetro a través del método get. Esta petición fue un éxito: el código 200 será devuelto.
  • Pedir que se encuentre un producto pasando una reference como parámetro a través del método get. Esta solicitud fracasó porque la reference no existe: el código 404 será devuelto.

Etapa 3: Método 2: automatic creación de puntos de entrada y procedimientos (métodos) para un archivo encontrado en el análisis

En el resto de la creación del punto de entrada asistente:
  1. Seleccione el archivo de análisis en el que se describirán los puntos de entrada.
  2. Pase a la etapa siguiente.
  3. Seleccione los elementos que se expondrán en el Webservice.
    Estos elementos serán accesibles en modo de lectura y/o en modo de escritura a través de los puntos de entrada del servicio web REST.
  4. Pase a la etapa siguiente.
  5. Seleccione la tecla que se utilizará para acceder a un archivo Record para leerlo, modificarlo o borrarlo.
  6. Pase a la etapa siguiente.
  7. Seleccione el formato utilizado para intercambiar datos al llamar a los puntos de entrada del servicio web REST. 3 formatos disponibles:
    • JSON (UTF-8): Los datos enviados o devueltos están en formato JSON.
    • JSON (UTF-8) (vía HRecordToJSON): Los datos se formatean en un objeto intermedio creado por HRecordToJSON.
    • XML: Los datos enviados o devueltos están en formato XML.
  8. Pase a la etapa siguiente.
  9. Seleccione la lista de puntos de entrada que se generarán al crear el servicio web REST..
    Por Default, se generan todos los tipos de puntos de entrada:
    • Crear: Añade una Record a la el archivo de datos.
    • indicar: Encuentra y lee una Record en el archivo de datos.
    • Actualización: Actualizar una Record en el archivo de datos.
    • suprimir: Borrar una Record de la el archivo de datos.
    • Leer todos los registros: Lea todos los registros en el archivo de datos.
  10. Pase a la etapa siguiente.
  11. Ha terminado. La asistente genera el código fuente en objeto (OOP) y el REST Webservice con todos los puntos de entrada. La clase creada contiene:
    • la declaración de los miembros que representan los artículos de Record utilizados (a través de mapping).
    • la declaración de los diferentes métodos que representan los diferentes puntos de entrada de REST Webservice. Un método para cada punto de entrada de REST Webservice.
    • un método sCreation para el punto de entrada de creación.
    • un método sRead para el punto de entrada de lectura.
    • un método sModification para el punto de entrada Modificación.
    • un método de eliminación para el punto de entrada de eliminación.
    • un método sReadAll para el punto de entrada Leer todos los registros.
Probar un servicio web REST y depurarlo
WINDEV y WEBDEV le permiten ejecutar la prueba de su REST Webservice en el depurador. En este caso, todo lo que tiene que hacer es incluir puntos de interrupción en el código de procedimientos de Webservice y ejecutar su prueba (GO).
Para ejecutar la prueba de un servicio web REST y depurarla:
  1. Iniciar WDADMIN. WDADMIN es la servidor de aplicaciones proporcionada con WEBDEV. Este servidor de aplicaciones se utiliza para ejecutar la prueba localmente de los sitios WEBDEV y los servicios Web desarrollados con WEBDEV o WINDEV.
  2. Mostrar (si es necesario) la description de REST Webservice en el editor.
  3. Despliegue que se encuentra en los botones de acceso rápido y seleccione "Depurar el Webservice".
    El proyecto se recopila. La siguiente ventana se abre.
  4. Seleccione el método de prueba:
    • Ejecutar prueba del Webservice a través de la herramienta de prueba del editor: Con WINDEV y WEBDEV se proporciona una herramienta que permite ejecutar la prueba de cada punto de entrada de Webservice (véase más abajo).
    • Ejecutar prueba del Webservice con un programa externo: Elija esta opción si se ha desarrollado un programa específico para llamar al Webservice. El modo de prueba se detiene cuando el ejecutable deja de funcionar.
    • Ejecutar prueba del Webservice manualmente: El editor WINDEV o WEBDEV espera una llamada externa. Por ejemplo, tiene la posibilidad de abrir un navegador y escribir la URL de la consulta correspondiente a uno de los puntos de entrada del Webservice cuya prueba se ejecutará.. La consulta será procesada y una respuesta será devuelta en el navegador..
  5. Haga clic en el botón "Ejecutar prueba".

Herramienta de prueba de Webservice: WDTestRest

La herramienta WDTestRest se proporciona con WINDEV y WEBDEV. Esta herramienta enumera todos los puntos de entrada del Webservice cuya prueba se ejecutará.
El panel izquierdo representa:
  • la lista de todos los puntos de entrada de Webservice,
  • el historial de todas las pruebas realizadas.
La sección derecha muestra la lista de todos los puntos de entrada cuya prueba se ejecutó en formato de panel.
Para ejecutar la prueba de un punto de entrada:
  1. Haga doble clic en un punto de entrada del panel izquierdo. Se abre un cristal a la derecha.
  2. Rellenar la URL. Por ejemplo, reemplace los parámetros esperados entre {...} por un valor real.
  3. Seleccione el tipo de autenticación en la lista.
  4. Introduzca los parámetros de cabecera si es necesario.
  5. Haga clic en el botón "Enviar" para ejecutar la prueba. Se visualiza el resultado.
    • El panel "Respuesta" contiene el resultado devuelto por la URL.
    • El valor "Estado" corresponde al código de respuesta HTTP devuelto por la URL.
El enlace "Generar el código WL" se utiliza para generar y recuperar el código WLanguage equivalente a la ejecución de la prueba con el fin de incluirlo en su proyecto.
Para obtener más información, consulte WDTestRest: Ejecute la prueba de sus servicios web REST.
Generación del servicio web REST
Para generar un servicio web REST:
  1. Generar el Webservice:
    • si la configuración actual es la del Webservice:
      • en la pestaña "Proyecto", en el grupo "Generación", haga clic en "Generar".
      • haga clic en la generación Icon en los botones de acceso rápido.
    • si la configuración actual no es la del Webservice: seleccionar la generación deseada de los botones de acceso rápido.
  2. Comienza la generación del servicio web asistente.
  3. Especifique el nombre del servicio web. Por Default, el nombre del Webservice corresponde al nombre del proyecto actual.
  4. Validar.
  5. La implementación asistente se inicia automáticamente a partir de entonces.
Despliegue de un servicio web REST

Despliegue de un servicio web

Para poder ser utilizado, un Webservice debe ser desplegado en un Servidor de Aplicación WEBDEV.
Se pueden utilizar varios métodos de implementación:
  • Despliegue del Webservice en CLOUD para aplicaciones PC SOFT.
  • Despliegue del Webservice en un servidor de aplicaciones WEBDEV remoto.
  • Creando un paquete remoto de implementación.
  • Creando una instalación por medios físicos.
  • Creación de un servicio web Docker Image.
  • Despliegue del Webservice a través del servicio de alojamiento de prueba de PC SOFT.
  • Despliegue del servicio web en el equipo local.
Las opciones para desplegar un servicio web son idénticas a las opciones para desplegar un sitio WEBDEV.. Para obtener más información, consulte Implementar un sitio.

Caso especial: Despliegue de un servicio web y ejecución de su prueba en el equipo local

La prueba del Webservice creado se puede ejecutar en el ordenador del desarrollador. Para ello, seleccione "Desplegar el Webservice en el equipo local". Este tipo de instalación está disponible sólo si WEBDEV está disponible en el ordenador de desarrollo. En este caso, el servidor de aplicaciones utilizado es el de WEBDEV.
Al final de la instalación, una pantalla con un enlace permite mostrar el servicio web description.
El Webservice está listo para ser utilizado.
Llamada a una función REST mediante programación
RESTSend se utiliza para llamar a una función de un servicio web REST. Para ello, es necesario:
  • Utilice una Variable de tipo httpRequest para describir la función REST a la que se debe llamar:
    • La URL Property describe el Address (URL) de la función REST Webservice.
    • La propiedad Method describe el método HTTP utilizado (GET, PUT, etc.).
    • ContentType Property describe el tipo de datos que se pasarán como parámetro a la función REST Webservice.
    • El contenido Property contiene los datos que se enviarán como parámetro a la función REST Webservice.
    • los eventuales parámetros a pasar.
  • Utilice una Variable de tipo restResponse para recuperar el resultado de la función REST:
    • El StatusCode se utiliza para get el código de estado de respuesta.
    • La propiedad Content contiene los datos de la respuesta.

Por ejemplo

  • El siguiente ejemplo de código explica cómo recuperar información sobre un cliente identificado por su número. Se devuelve un código 200 si el cliente no existe.
    nCustomerNum is int
     
    nCustomerNum= 2
     
    h is httpRequest
    h.Method = httpGet
    h.URL = "http://localhost/V1/Customers/" + nCustomerNum
     
    r is restResponse = RESTSend(h)
    IF r.StatusCode = 200 THEN
    Info(r.Content)
    ELSE
    Info("Customer not found", r.Content)
    END
  • El siguiente ejemplo de código explica cómo borrar un cliente identificado por su número. Se devuelve un código 404 si el cliente no existe.
    nCustomerNum is int
     
    nCustomerNum= 267
     
    h is httpRequest
    h.Method = httpDelete
    h.URL = "http://localhost/V1/Customers/" + nCustomerNum
     
    r is restResponse = RESTSend(h)
     
    IF r..StatusCode = 404 THEN
    Info("Customer NOT found.")
     
    ELSE
    Info("The customer was successfully deleted")
    END
  • El siguiente ejemplo explica cómo añadir un cliente. Se devuelve un código 201 si el cliente se ha añadido correctamente..
    NewCust is Buffer
    vCust is Variant
     
    vCust.CustomerName = "MOORE"
    vCust.Company = "MOORE Ltd"
    vCust.City = "LONDON"
     
    NewCust = VariantToJSON(vCust)
     
    h is httpRequest
    h.Method = httpPost
    h.URL = "http://localhost/V1/Clients"
    h.ContentType = "application/json"
    h.Content = NewCust
     
    r is restResponse = RESTSend(h)
    IF r.StatusCode = 201 THEN
    Info(r.Content)
    ELSE
    Info("Error while creating customer", r.Content)
    END
Generación de la OpenAPI Definition
Puede generar la OpenAPI Definition del servicio web REST: en el panel "REST Webservice", en el grupo "Opciones", seleccione "Documentación OpenAPI..." y seleccione la ubicación en la que debe generarse el archivo YAML correspondiente.
Versión mínima requerida
  • Versión 22
Esta página también está disponible para…
Comentarios
dead link in the page
step 3 method 1, "For more details, see Composition of resource.", the link just sends me back to step 3 method 1.
brys
20 03 2024

Última modificación: 13/06/2023

Señalar un error o enviar una sugerencia | Ayuda local