Implantar una API personalizada para un servicio REST adecuado
Al desarrollar una aplicación móvil, normalmente se empieza por la capa de la interfaz de usuario en primer lugar y, a continuación, se 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 backend, puede presentar problemas de rendimiento y seguridad involuntariamente.
Le recomendamos empezar a crear una capa API ficticia entre los servicios backend externos y la interfaz de usuario para reducir el número de llamadas a los servicios backend siempre que sea posible. Por ejemplo, la aplicación móvil puede ejecutar una única llamada a la capa API predeterminada que maneja las llamadas a otros servicios de REST y consolida todos los datos entrantes en una única respuesta a la 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
Cree recursos para definir los puntos finales de la API. Un recurso es la cruz 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 en él. Un recurso puede ser casi cualquier: una imagen, un archivo de texto, una recopilación de otros recursos, una transacción lógica, un procedimiento, etcétera.
Cuando crea un método para un recurso, aparece un símbolo para ese método debajo del enlace Métodos. Puede ver de inmediato los métodos definidos para un recurso si necesita examinar una definición de recurso. Haga clic en un icono para ir directamente a la definición de ese método.
Puede borrar la confusión para localizar un recurso de forma más rápida cambiando al modo compacto (se encuentra a la derecha de Nuevo recurso ). La visualización compacta oculta la descripción del recurso, el tipo de recurso y la ruta.
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 a la 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 sus detalles.
Después de definir los 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 los parámetros y un cuerpo de la solicitud, que contiene 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 Add Media Type (Agregar tipo de medio) y defina el cuerpo del método. El cuerpo contiene los datos que está enviando al servidor. Por ejemplo, si está definiendo un método
POST
, deberá definir el artículo que está creando, como una nueva lista de clientes o una solicitud de servicio. Si está definiendo un métodoGET
, no necesita enviar un cuerpo de método para que no sea necesario especificar un tipo de medio. - Haga clic en Agregar Tipo de Medio Físico para agregar tipos de medio adicionales. Si decide que no desea 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 verifique que se han devuelto los datos solicitados o puede que desee una respuesta que confirme si se ha recibido o no la solicitud. La definición de una respuesta es similar a la definición de una solicitud. La principal diferencia es que necesitará seleccionar un código de estado para que sepa el resultado de la conexión.
POST
del recurso audits
con el código de estado 201 que indica que se ha creado un nuevo recurso. El ejemplo también muestra un formato de respuesta de retorno application/json
, una cabecera Location
agregada y el cuerpo del mensaje que contiene los datos de 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 allí, 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 no desea que el método, haga clic en X en el banner para suprimirlo.
Crear una API de conector de REST
Utilice el asistente de 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 tan solo un nombre para la API de conector y una URL al servicio externo.
Desde allí puede:
-
Defina reglas para formar solicitudes o respuestas específicas de los datos a los que desea acceder.
-
Configure 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 e implantación para permitir que las aplicaciones llamen a las API del conector y generen 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, implantar el código personalizado.
Configuración de un conector básico
Para crear un conector en funcionamiento, complete las dos primeras páginas del asistente de API de REST Connector.
-
Haga clic en
y seleccione Desarrollo y, a continuación, API en el menú lateral.
-
Haga clic en REST (si ésta es 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 que aparecerá en la lista de API del conector.
-
Nombre de API: nombre único de la API de conector.
Por defecto, este nombre se agrega al URI base relativo como el nombre de recurso para la API del conector. Puede ver el URI base debajo del 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 cuadro de diálogo API de conector de REST, defina los valores de timeout:
-
Timeout de Lectura 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 HTTP: tiempo (en milisegundos) empleado en conectarse a la URL remota. Un valor 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 Mobile Cloud además del rol de desarrollador de servicios, 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, solicite a su administrador de Mobile Cloud que indique los valores.
-
-
Haga clic en Descriptor e introduzca la información de conexión del servicio.
Si proporciona una URL de descriptor Swagger, se identifican y muestran los recursos disponibles, y puede seleccionar los que desea.
Nota:
Sólo se admiten los puertos de acceso estándar de Internet 80 y 443. No se puede realizar la conexión a 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 maneras:
-
(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 del conector es válida, debe probarla en profundidad (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 implantación) que utiliza esta API de conector. En esencia, si está listo para publicar la API de conector, también debería estar listo para publicar la API personalizada que la llama.
Definir Reglas
Puede definir reglas 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 del servicio, llamadas a una ruta de acceso de proxy específica y llamadas a determinados tipos de operaciones (verbos). Esto ayuda a aplicar una sintaxis coherente de la cadena de URL, guardar al desarrollador de código personalizado de tener que insertar estos valores y hacer que sea posible realizar un seguimiento de las diferentes llamadas a través de análisis.
Puede crear una o más reglas. Cada regla puede tener uno o más parámetros de 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 proporcionaron 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 GET
a https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
disponible en myMapAPI/directions
, incluya Query:key=A3FAEAJ903022
.
Si no se crearon reglas, la descripción se leería:
Para que ALL METHODS https://maps.googleapis.com/maps/api/directions
esté disponible en myMapAPI
, no se aplicará ningún parámetro por defecto.
Ahora tiene un URI base que se asigna al servicio existente. Con 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, llamadas 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 distintas, puede utilizar la misma política genérica y sustituir valores específicos para cumplir sus requisitos.
Para seleccionar una política de seguridad y definir las sustituciones de política: