miércoles, 7 de junio de 2017

Cómo configurar el servicio oData de Northwind

En los post que hemos ido viendo, siempre creábamos un servicio oData en nuestro Back-End. Lo cual es normal, todo sea dicho, ya que estamos aprendiendo a hacer cosas tanto en el Front-End como en el Back-End.

¿Pero qué pasa si no tenemos acceso a un SAP en el que poder hacer nuestras prácticas o que simplemente le tenemos tirria al ABAP y sólo queremos aprender un poquinín de SAP UI5? En ese caso, podemos usar el servicio de Northwind.

Este servicio está disponible en la siguiente URL: https://services.odata.org/V2/Northwind/Northwind.svc/

Hay también una versión 3 y versión 4 de oData, pero para el Web IDE sólo podemos usar hasta la versión 2.

Lo primero que tenemos que hacer es crear el destination en nuestra cuenta de SAP Cloud Platform. Este destination apuntará al dominio donde está el servicio, services.odata.org, de tipo Internet.

Los parámetros adicionales son importantes. Para que nos aparezca el servicio en el Web IDE, debemos marcar WebIDEEnabled con true. Y para poder usarlo como servicio oData genérico, debemos añadir al WebIDEUsage la cadena odata_gen.

Editado (antes sólo usábamos http): Como usamos una URL de tipo segura (https), nos aparecerán tres campos para indicar la ubicación de los certificados de seguridad. Marcamos el check "Use default JDK truststore" para usar el que nos proporciona SAP Cloud Platform por defecto.

Nos hemos creado el destination en un periquete

¡Pues ya hemos creado el destination! ¡Level up!

Ahora vamos a ver cómo usar el destination. Nos vamos de visita al Web IDE y nos creamos una aplicación que nos permite usar servicios oData.

Vamos a por una sencillita, una de tipo Worklist

Le damos un nombre a la aplicación y pasamos al punto siguiente, la conexión de datos. Es aquí donde vamos a usar nuestro destination para usar el servicio oData de Northwind.

Lo que tenemos que hacer es elegir como fuente Service URL. Al hacerlo, ya nos aparecerá en el desplegable de sistemas el destination que nos hemos creado.

Así que lo seleccionamos y añadimos en la casilla inferior la URL relativa del servicio oData. En nuestro caso, como el servicio oData es https://services.odata.org/V2/Northwind/Northwind.svc/ y nuestro sistema apunta a https://services.odata.org... pues blanco y en botella, tenemos que indicar /V2/Northwind/Northwind.svc.

Después pulsamos el botón Test para que cargue las colecciones del servicio (o nos eche la bronca por hacerlo mal). Si nos salen datos, ¡es que lo hemos hecho bien!

¡Prueba superada!

Como decía la principio, de momento el Web IDE no soporta más allá de la versión 2 de servicios oData. Así que si no cumplimos con esta condición, nos podría dar un resultado como el siguiente.

oData version 3 is not supported. Lo que traducido quiere decir "Has metido la pata, colega"

Pues nada, volvemos a restablecer el servicio correcto y acabamos de crear la aplicación.


Y ¡tachán!, ya tenemos la aplicación creada, usando el servicio oData de Northwind. Y todo eso sin tener que pelearnos con SAP, que algunos ya nos peleamos demasiado con él en el día a día.


Editado (20190331): Este artículo inicialmente usábamos http en lugar de https. Pero, no sé a partir de qué momento, las http las redirigen a https, y eso hacía que fallase la aplicación (al redirigir, incumplía con la same-origin policy).  (. Ya lo he actualizado para que muestre los datos correctamente.

5 comentarios:

  1. Hola, al realizar todos los pasos y ejecutar la app desde SAP WEB IDE me sale un error con el siguiene mensaje:
    Sorry, a technical error occurred! Please try again later.
    \{
    "message": "HTTP request failed",
    "headers": [],
    "statusCode": 0,
    "statusText": "",
    "responseText": ""
    }

    ¿De pronto tienen alguna solución para este inconveniente?, muchas gracias.

    ResponderEliminar
    Respuestas
    1. Me sale lo mismo que a ti :(

      Eliminar
    2. Veo que ha habido cambios en el servicio de Northwind, antes aceptaba (o supongo que lo hacía) llamadas http, pero ahora tienen que ser llamadas https. O eso, o en su momento hice el post con Internet Explorer, pero creo que no es el caso.

      Por defecto, si usamos la URL con http en nuestro navegador, nos va a redirigir a https... y ni nos enteramos.

      Pero el destination de ejemplo lo creé de tipo http. Si lo testeamos, nos dará un mensaje de "OK: 301", que significa que funciona pero nos redirige.

      Vale, eso funciona, pero si vamos a la consola de errores cuando llamamos a nuestra aplicación, tenemos un mensaje de error indicando que nos está redirigiendo a una URL en otro servidor y que eso el Chrome no nos lo permite (CORS, control de accesos http, para evitar entrar en una página que llama a contenido de otro dominio alegremente). Internet Explorer ese mensaje se lo zampa por defecto (a no ser que lo hayamos configurado para que cumpla con las directivas correspondientes).

      Y después de esta chapa, ¿cómo solucionarlo?
      Cambiando el destination a tipo HTTPS. Nos pedirá la ubicación de nuestros certificados, pero marcaremos Use default JDK truststore.

      Con eso y esperando 5 minutos (o refrescando el navegador), ya no nos debería dar problemas. Al menos a mí ya me funciona bien.

      Actualizaré el artículo en cuanto tenga un rato libre. ¡Gracias por el aviso!

      Eliminar
    3. Genial explicación. Ahora con tu solución funciona perfectamente y queda muy entendido del porque no funcionaba anteriormente.
      Muchas gracias a ti, un saludo.

      Eliminar
  2. Me ha funcionado perfecto. Ahora a seguir trasteando. Muchas Gracias.

    ResponderEliminar