Implantar una API personalizada para un servicio de REST de fachado
Al desarrollar una aplicación móvil, normalmente comienza con la capa de interfaz de usuario primero y, a continuación, conecta la aplicación con otra aplicación mediante los servicios web de REST. Este enfoque funciona bien para aplicaciones pequeñas o simples. Cuando las aplicaciones son más grandes y desea conectarse con varios servicios de backend, puede introducir sin darse cuenta el rendimiento y los problemas de seguridad.
Le recomendamos empezar a crear una capa de API fato entre los servicios externos de backend y la interfaz de usuario para reducir el número de llamadas a los servicios de backend siempre que sea posible. Por ejemplo, su aplicación móvil puede ejecutar una única llamada a la capa de API faU1ade que maneja las llamadas a otros servicios de REST y consolida todos los datos entrantes en una única respuesta a su aplicación móvil.
Creación de una API personalizada completa
Para crear una API personalizada completa mediante Oracle Mobile Hub.
Haga clic en y seleccione Desarrollo y, a continuación, API en el menú lateral. Si una API ya se ha creado (ya se encuentra en estado Provisional o Publicado), verá una lista de API. Si no existe ninguna API personalizada, verá una página con el botón Nueva API. Haga clic en la API que ya ha creado o en Nueva API para comenzar.
Definir Puntos Finales
Puede crear recursos para definir los puntos finales de la API. Un recurso es la crux de una API. Tiene un tipo, algunos datos asociados a él, una relación con otros recursos y contiene uno o más métodos que actúan sobre ellos. Un recurso puede ser casi cualquier cosa: una imagen, un archivo de texto, una recopilación de otros recursos, una transacción lógica, un procedimiento, etc.
Al crear un método para un recurso, aparece un símbolo para ese método debajo del enlace Métodos. Puede ver de inmediato qué métodos se definen para un recurso si necesita examinar una definición de recurso. Haga clic en un icono para ir directamente a esa definición de método.
Puede borrar la orden para localizar un recurso más rápidamente cambiando al modo Compacta (está a la derecha del nuevo recurso ). El despliegue compacto oculta la descripción, el tipo de recurso y la ruta del recurso.
Agregar métodos a los recursos
Los métodos son acciones que se pueden realizar en un recurso. La página Métodos muestra un método cada vez. Después de definir al menos dos métodos, puede hacer clic en el icono de un método en la parte superior de la página para ver los detalles.
Después de definir métodos para el recurso, puede definir las solicitudes y respuestas para esos métodos.
Definir una solicitud para el método
Ahora que ha seleccionado un método, defina la solicitud a la que está realizando el servicio al que desea conectarse. Por ejemplo, si ha seleccionado un método POST
, ahora puede definir lo que desea crear. Para ello, agregue parámetros y un cuerpo de solicitud, que contenga la descripción de los datos que desea enviar al servicio.
- Haga clic en Solicitud para definir una solicitud.
- Haga clic en Agregar parámetro y seleccione un tipo de parámetro: Consulta o Cabecera . Seleccione Necesario si el parámetro es necesario para el método.
- Según el método seleccionado, haga clic en Agregar Tipo de Medio Físico y defina el cuerpo del método. El cuerpo contiene los datos que envía al servidor. Por ejemplo, si está definiendo un método
POST
, deberá definir el elemento que está creando, como una nueva lista de clientes o solicitud de servicio. Si está definiendo un métodoGET
, no necesita enviar un cuerpo del método para que no tenga que especificar un tipo de medio. - Haga clic en Add Media Type (Agregar tipo de medio) para agregar tipos de medios adicionales. Si decide que no desea utilizar el método, haga clic en X en el banner para suprimirlo.
Definir una respuesta para el método
En función de la solicitud, puede que necesite o no una respuesta. Una respuesta describe el proceso para devolver resultados del servicio. Puede que desee definir una respuesta que compruebe que se han devuelto los datos solicitados o que desee una respuesta que confirme si se ha recibido la solicitud. La definición de una respuesta es similar a la definición de una solicitud. La principal diferencia es que tendrá que seleccionar un código de estado para poder saber el resultado de la conexión.
POST
del recurso audits
con un código de estado de 201 que indica que un nuevo recurso se ha creado correctamente. El ejemplo también muestra un formato de respuesta de retorno application/json
, una cabecera Location
que se ha agregado y el cuerpo del mensaje que contiene datos ficticios:responses:
201:
description: |
The request has been fulfilled and resulted in a new resource
being created. The newly created resource can be referenced
by the URI(s)returned in the entity of the response, with the
most specific URI for the resource given by a Location header
field.
headers:
Location:
displayName: Location
description: |
Identifies the location of the newly created resource.
type: string
example: |
/20934
required: true
body:
application/json:
example: |
{
"id": 20934,
"title": "Lynn's Leaking Water Heater",
"contact": {
"name": "Lynn Adams",
"street": "45 O'Connor Street",
"city": "Ottawa",
"postalcode": "a1a1a1",
"username": "johnbeta"
},
"status": "New",
"driveTime": 30,
"priority": "high",
"notes": "My notes",
"createdon": "2014-01-20 23:15:03 EDT",
"imageLink": "storage/collections/2e029813-d1a9-4957-a69a-fbd0d74331d77/objects/6cdaa3a8-097e-49f7--9bd2-88966c45668f?user=lynn1014"
}
Al definir su respuesta, puede decidir probar los puntos finales o hacer clic en Puntos Finales en la barra de navegación para volver a la página principal Recursos. Desde ahí, puede continuar con otra página del diseñador de API para crear una raíz, tipos de recursos o rasgos, o bien agregar documentación de API.
Si decide que no desea utilizar el método, haga clic en X en el banner para suprimirlo.
Crear una API de conector de REST
Utilice el asistente de la API de conector de REST para crear, configurar y probar la API de conector.
Para obtener una API de conector de trabajo básica, puede proporcionar el nombre de la API de conector y una URL al servicio externo.
Desde ahí, puede:
-
Defina reglas para formar solicitudes o respuestas específicas para los datos a los que desea acceder.
-
Configure las políticas de seguridad del cliente para el servicio al que accede.
-
Pruebe la conexión y pruebe los resultados de las llamadas realizadas a la conexión.
Debe crear una API personalizada y una implantación para permitir que sus aplicaciones llamen a las API del conector y generar la API y la implantación automáticamente. Si desea hacerlo manualmente, debe crear una API personalizada con los recursos adecuados y, a continuación, implementar el código personalizado.
Configuración de un conector básico
Puede crear un conector en funcionamiento. Para ello, complete las dos primeras páginas del asistente de la API de REST Connector.
-
Haga clic en
y seleccione Desarrollo y, a continuación, API en el menú lateral.
-
Haga clic en REST (si se trata de la primera API de conector que se va a crear) o en Nuevo conector y en la lista desplegable, seleccione REST .
-
Identifique la nueva API de conector de REST proporcionando lo siguiente:
-
Nombre mostrado de API: el nombre tal y como aparecerá en la lista de API de conector.
-
Nombre de API: nombre único de la API de conector.
Por defecto, este nombre se agrega al URI base relativo como nombre de recurso para la API de conector. Puede ver el URI base bajo el campo Nombre de API .
Además de una nueva versión de esta API de conector, ninguna otra API de conector puede tener el mismo nombre de recurso.
-
Descripción Breve: Esta descripción se mostrará en la página Conectores cuando se seleccione esta API.
-
-
Haga clic en Crear .
-
En la página General del recuadro de diálogo API de REST Connector, defina los valores de timeout:
-
Timeout de Lectura de HTTP: tiempo máximo (en milisegundos) que se puede tardar en esperar para leer los datos. Si no proporciona un valor, se aplica el valor por defecto de 20 segundos.
-
Timeout de Conexión de HTTP: tiempo (en milisegundos) empleado en la conexión a la dirección URL remota. Un valor de 0mms significa que se permite un timeout infinito.
Los valores de timeout de HTTP deben ser inferiores a la política
Network_HttpRequestTimeout
, que tiene un valor por defecto de 40,000 ms.Nota:
Si tiene un rol de administrador de nube móvil además del rol de desarrollador de servicio, puede abrir el archivopolicies.properties
para ver el valor de las políticas de red para el entorno actual desde la vista de administrador. De lo contrario, pida al administrador de dispositivos móviles en la nube los valores.
-
-
Haga clic en Descriptor e introduzca la información de conexión para el servicio.
Si proporciona una URL de descriptor Swagger, se identifican y se muestran los recursos disponibles, y puede seleccionar los que desee.
Nota:
Solo se admiten los puertos de acceso a Internet estándar 80 y 443. No se puede establecer la conexión con un servicio mediante un puerto personalizado. -
Haga clic en Guardar.
-
(Opcional) Haga clic en Probar , seleccione las credenciales de autenticación y realice llamadas de prueba al servicio.
Desde allí, puede configurar el conector de las siguientes formas:
-
(Si ha proporcionado un descriptor en la página Descriptor) vaya a la página Recursos y seleccione los métodos para los recursos expuestos.
-
Defina reglas.
-
Defina políticas de seguridad.
Para asegurarse de que la configuración de la API de conector es válida, debe probarla detenidamente (no sólo desde la página de prueba de la API del conector) antes de publicarla. Es decir, también debe probar la API personalizada (con su implementación) que utiliza esta API de conector. Básicamente, si está listo para publicar la API del conector, también debe estar listo para publicar la API personalizada que lo llama.
Definir Reglas
Las reglas se definen para definir las interacciones entre la aplicación móvil y un servicio. Las reglas proporcionan una forma de agregar valores de parámetros por defecto para todas las llamadas a recursos en el servicio, llamadas a una ruta de acceso de proxy específica y llamadas para determinados tipos de operaciones (verbos). Esto ayuda a aplicar una sintaxis consistente de la cadena de dirección URL, a ahorrar al desarrollador de código personalizado la necesidad de insertar estos valores y permite realizar un seguimiento de las diferentes llamadas mediante análisis.
Puede crear una o más reglas. Cada regla puede tener uno o más parámetros del tipo Query
y Header
.
Si no se aplica ninguna regla, todas las llamadas se transfieren mediante el proxy al servicio existente.
La descripción de la regla que acaba de definir se muestra en el banner Regla justo encima de la sección Parámetros por Defecto . Por ejemplo, supongamos que se han proporcionado los siguientes valores:
-
URL Remota =
https://maps.googleapis.com/maps/api/directions
/json?origin=los+angeles&destination=seattle
-
URI local =
myMapAPI
-
Regla con el siguiente parámetro:
Query:key:A3FAEAJ903022
-
GET
yPUT
métodos HTTP
La descripción de la regla se leería de la siguiente manera:
Para que GET
https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
esté disponible en myMapAPI/directions
, incluya Query:key=A3FAEAJ903022
.
Si no se han creado reglas, la descripción sería:
Para TODOS METHODS a https://maps.googleapis.com/maps/api/directions
disponible en myMapAPI
, No se aplicará ningún parámetro por defecto.
Ahora tiene un URI base que se asigna al servicio existente. Al utilizar nuestro ejemplo:
mobile/connector/myMapAPI/directions/json?origin=los+angeles&destination=seattle
se asigna a https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
Configurar Políticas de Seguridad y Propiedades de Sustitución
Cada política de seguridad tiene propiedades, denominadas sustituciones, que puede configurar. Un motivo para sustituir una propiedad de configuración de política es limitar el número de políticas que tiene que mantener: en lugar de crear varias políticas con configuraciones ligeramente variadas, puede utilizar la misma política genérica y sustituir valores específicos para satisfacer sus requisitos.
Para seleccionar una política de seguridad y definir las sustituciones de política: