En esta página

Qt Quick Demo - Cliente API RESTful

Ejemplo de cómo crear un cliente QML de API RESTful.

Una interfaz gráfica de usuario para el servicio de paleta de colores

Este ejemplo muestra cómo crear un cliente API RESTful QML básico con un servicio de paleta de colores imaginario. La aplicación utiliza la comunicación RESTful con el servidor seleccionado para solicitar y enviar datos. El servicio REST se proporciona como un elemento QML cuyos elementos hijo envuelven las API de datos JSON individuales proporcionadas por el servidor.

Ejecución del ejemplo

Para ejecutar el ejemplo desde Qt Creatorabra el modo Welcome y seleccione el ejemplo de Examples. Para más información, consulta Qt Creator: Tutorial: Construir y ejecutar.

Funcionalidad de la aplicación

El ejemplo proporciona las siguientes funcionalidades básicas:

  • Seleccionar el servidor con el que comunicarse
  • Listar usuarios y colores
  • Iniciar y cerrar sesión de usuarios
  • Modificar y crear nuevos colores
Selección del servidor

Al iniciarse, la aplicación presenta opciones predefinidas con las que el servidor de la paleta de colores puede comunicarse:

Una vez seleccionado, el cliente de la API RESTful emite un GET HTTP de prueba a la API de color para comprobar si el servicio es accesible.

Una interfaz gráfica de usuario que muestra dos servidores para elegir

Una diferencia importante entre las dos opciones de API predefinidas es que el ejemplo de servidor de API REST basado en Qt es una aplicación con estado que permite modificar los colores, mientras que reqres.in es un servicio de prueba de API sin estado. En otras palabras, cuando se utiliza el backend reqres.in, la modificación de los colores no tiene ningún impacto duradero.

Lista de usuarios y colores

Los usuarios y los colores son recursos paginados en el lado del servidor. Esto significa que el servidor proporciona los datos en trozos llamados páginas. El listado de la interfaz de usuario refleja esta paginación y visualiza los datos en páginas.

La visualización de los datos en la interfaz de usuario se realiza con vistas QML estándar:

ListView {
    id: colorListView

    model: root.colors.data

Donde el modelo es una lista de datos JSON recibidos del servidor.

Inicio de sesión

El inicio de sesión se produce a través de la función de inicio de sesión proporcionada por la ventana emergente de inicio de sesión:

userMenu.userLoginService.login({"email" : userInfo.modelData.email,
                    "password" : "apassword",
                    "id" : userInfo.modelData.id})

Bajo el capó, el inicio de sesión envía una solicitud HTTP POST. Al recibir una respuesta satisfactoria, el token de autorización se extrae de la respuesta, que se utiliza en posteriores peticiones HTTP que requieran el token.

Una interfaz gráfica de usuario que enumera los usuarios

Edición de colores

La edición y adición de nuevos colores se realiza en una ventana emergente:

Una interfaz gráfica para editar un color

Tenga en cuenta que para cargar los cambios de color en el servidor es necesario que el usuario haya iniciado sesión.

Implementación REST

El ejemplo ilustra una forma de componer un servicio REST a partir de elementos de recursos individuales. En este ejemplo, los recursos son los recursos paginados user y color más el servicio de inicio de sesión. Los elementos de recursos están unidos por la URL base (URL del servidor) y el gestor de acceso a la red compartida.

La base del servicio REST es el elemento RestService, cuyos elementos hijos componen el servicio real:

RestService {
    id: paletteService

    PaginatedResource {
        id: users
        path: "users"
    }

    PaginatedResource {
        id: colors
        path: "unknown"
    }

    BasicLogin {
        id: colorLogin
        loginPath: "login"
        logoutPath: "logout"
    }
}

Al instanciarse, el elemento RestService hace un bucle con sus elementos hijos y los configura para que utilicen el mismo gestor de acceso a la red. De este modo, los recursos individuales comparten los mismos detalles de acceso, como la URL del servidor y el token de autorización.

La comunicación real se realiza con un gestor de acceso restante que implementa algunas funciones prácticas para tratar específicamente con las API REST de HTTP y se encarga de enviar y recibir QNetworkRequest y QNetworkReply según sea necesario.

Archivos fuente

Proyecto de ejemplo @ code.qt.io

Ver también Todos los Ejemplos Qt y Qt Quick Ejemplos y Tutoriales.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.