REST Diseño de API: Llamadas múltiples frente a una sola llamada a la API

7

Estamos desarrollando una API de Rest para el sitio web de comercio electrónico que será consumida por las aplicaciones móviles.

En la página de inicio de una aplicación, necesitamos llamar a múltiples recursos como Sliders, Top Brands, Best Selling Products, Trending Products, etc.

Dos opciones para hacer llamadas a la API:

Llamada única:

www.example.com/api/GetAllInHome

Llamadas múltiples:

www.example.com/api/GetSliders

www.example.com/api/GetTopBrands

www.example.com/api/GetBestSellingProducts

www.example.com/api/GetTrendingProducts

¿Cuál es el mejor enfoque para el diseño de la API de descanso: llamada única o múltiple, explique los pros y los contras?

¿Cuál tomará más tiempo para responder a la solicitud?

    
pregunta stom 09.02.2017 - 07:48

2 respuestas

7

En Theory , las múltiples llamadas simultáneas son más flexibles y rápidas.

Sin embargo, en la práctica, si carga una página, y luego carga cada parte de esa página, mostrando agujas de carga por todas partes hasta que obtenga los resultados, el resultado es lento e inconexo.

Por esta razón, las solicitudes de datos de AJAX se deben usar con moderación y solo cuando tiene una sección de la página que tarda en cargarse o necesita actualizarse en un ciclo diferente al resto de la página. Diga una pantalla maestra / detalle, donde desea seleccionar una opción del maestro y mostrar los detalles correspondientes sin volver a cargar el maestro.

Un diseño común es mantener las API separadas para la flexibilidad de codificación y las inquietudes de los microservicios, pero combinar el lado del servidor de datos en el sitio web. de modo que el cliente necesita hacer una sola llamada a su propio sitio web. Las llamadas a la API con almacenamiento en caché apropiado deben ser rápidas dentro del centro de datos.

También, considere no tener llamadas de API de cliente en absoluto. simplemente generar el lado del servidor HTML. Aunque los marcos de aplicaciones de una sola página de javascript lo empujan por la ruta de la API. Por lo general, no es el enfoque óptimo para sitios de comercio electrónico de gran volumen.

    
respondido por el Ewan 09.02.2017 - 10:36
2

TL; DR: aparte de todas las demás consideraciones de aplicación, realizar una sola llamada sería más rápido que realizar múltiples llamadas. Ejecutar las llamadas de forma asíncrona puede reducir el tiempo total necesario para completar una operación dada desde la perspectiva de su usuario (lo que bien podría ser todo lo que necesita), pero en conjunto, el tiempo requerido aún sería mayor para múltiples llamadas.

Sin embargo, en su caso, no estoy seguro de que esa sea la historia completa.

Las API de REST

son un término ligeramente ambiguo, debido a varias interpretaciones del documento que hicieron popular la idea. Incluso por la interpretación más liberal de lo que constituye una API REST, sin embargo, lo que tienes realmente no encaja.

El principio básico es que tiene un recurso en el que desea realizar una acción. El URI identifica el recurso en el que está interesado y normalmente usaría los verbos HTTP para indicar qué desea hacer con ese recurso.

En su caso específico, todos sus métodos tienen la palabra "obtener" en su nombre. Debería cambiar el verbo utilizado en la solicitud HTTP para indicar que desea "obtener" el recurso disponible en esa ubicación.

Su esquema de URI debe representar la jerarquía lógica de los recursos que desea poner a disposición de los usuarios de su API, por lo que en su caso consideraría usar algo como /api/products?category=sliders para filtrar su colección de productos. Esto significa que cuando los clientes desean obtener todos sus productos, simplemente pueden omitir la cadena de consulta.

    
respondido por el richzilla 09.02.2017 - 09:01

Lea otras preguntas en las etiquetas