이 페이지에서

ColorPalette RESTful API 클라이언트

OpenAPI 클라이언트 코드를 생성하고 애플리케이션에 통합하는 방법의 예시입니다.

색상 견본, 이름, 16진수 RGB 값, 팬톤 값 및 작업 버튼이 포함된 색상 팔레트 표

이 예제는 Qt OpenAPI 생성기를 사용하여 colorpalette.yaml 사양에서 RESTful API 클라이언트 코드를 생성하고 이를 QML 애플리케이션에 통합하는 방법을 보여줍니다. 이 예제의 구조와 UI는 Qt Quick 데모 - RESTful API 클라이언트 예제와 거의 일치하므로 네트워킹 및 통합 접근 방식의 차이점을 쉽게 식별할 수 있습니다.

예제 실행하기

에서 예제를 실행하려면 Qt Creator에서 Welcome 모드를 열고 Examples 에서 예제를 선택합니다. 자세한 내용은 Qt Creator: 튜토리얼을 참조하세요 : 빌드 및 실행을 참조하세요.

애플리케이션 기능

이 예제는 Qt Quick 데모 - RESTful API 클라이언트와 동일한 기본 기능을 제공합니다.

서버 선택

시작 시 애플리케이션은 색상표 클라이언트가 통신할 수 있는 미리 정의된 서버 옵션을 제공합니다:

서버를 선택하고 Connect 버튼을 누르면 RESTful API 클라이언트는 서버가 사용 가능한지 확인하기 위해 테스트 HTTP GET 요청을 발행합니다. 서버가 실행되고 있지 않으면 애플리케이션은 서버 선택 보기에 그대로 유지됩니다.

Qt 기반 REST API 서버 옵션 및 연결 버튼이 있는 서버 선택 대화 상자

OpenAPI 사양에서 클라이언트 코드 생성하기

CMakeLists.txt 파일은 Qt OpenAPI 생성기를 호출하여 colorpalette.yaml 사양으로부터 클라이언트 코드를 생성하는 qt6_add_openapi_client 함수를 호출합니다.

qt_add_openapi_client(ColorpaletteClientExample
    SPEC_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/colorpalette.yaml
)

생성된 API 클래스 ColorsApiUsersApi 는 모든 저수준 HTTP 세부 사항을 처리합니다:

  • 서버 구성
  • 모든 표준 HTTP 메소드에 대한 HTTP 요청 구성
  • 사양에 따른 입력 매개변수의 직렬화
  • 서버 응답을 타입화된 객체로 역직렬화
  • 성공 및 오류는 Qt 시그널을 통해 보고됩니다.

이 접근 방식은 QtNetworkAuth API를 직접 사용하는 다른 버전의 예제와 비교했을 때 수동 네트워크 요청 구성이 필요하지 않습니다.

생성된 API를 QML에 노출하기

생성된 API 클래스 ColorsApiUsersApiApiBridges.h 에 정의된 헬퍼 클래스를 통해 QML에 노출됩니다. 각 헬퍼는 QML_FOREIGN 매크로를 사용하고 기본 C++ 인스턴스를 싱글톤으로 등록하여 소유권이 C++에 남아 있는 동안 QML이 동일한 객체에 액세스할 수 있도록 합니다. 이 주제에 대한 자세한 내용은 기존 객체를 싱글톤으로 노출하는 방법에 대한 Qt Qml 설명서를 참조하세요.

struct ForeignColorsAPI
{
    Q_GADGET
    QML_FOREIGN(QtOpenAPI::ColorsApi)
    QML_SINGLETON
    QML_NAMED_ELEMENT(ColorsApi)

};

QML의 API 사용

일단 등록되면 API는 QML에서 전역적으로 사용할 수 있습니다. 이를 통해 QML 컴포넌트는 아래 그림과 같이 ColorsApiUsersApi 에 직접 액세스하여 해당 메서드를 호출할 수 있습니다:

ColorsApi.getColors(page)

각 API 메서드는 작업이 성공하거나 실패할 때 신호를 방출하여 QML 컴포넌트가 서버 응답을 처리할 수 있도록 합니다:

function onAddColorFinished() {
    root.fetchColors(root.currentColorPage)
}

function onAddColorErrorOccurred(errorType, errorStr) {
    root.handleError(errorStr)
}
헬퍼 싱글톤 유형

일부 API 메서드는 CredentialsColor 과 같이 사소하지 않은 유형을 매개변수로 받습니다. 이 예제에서는 ApiBridges.h 에서 이러한 유형의 인스턴스를 구성하기 위한 QML 싱글톤을 제공합니다:

class Credentials: public QObject
{
    Q_OBJECT
    QML_ELEMENT
    QML_SINGLETON
public:
    Q_INVOKABLE QtOpenAPI::Credentials create(const QString &email, const QString &password)
    {
        QtOpenAPI::Credentials credentials;
        credentials.setEmail(email);
        credentials.setPassword(password);
        return credentials;
    }
};

그런 다음 이러한 싱글톤은 API 메서드를 호출할 때 QML에서 사용할 수 있습니다. 예를 들어 Credentials 은 로그인하기 전에 자격 증명 객체를 만드는 데 사용됩니다:

let credentials = Credentials.create(userInfo.model.email, "apassword");
UsersApi.loginUser(credentials);

소스 파일

예제 프로젝트 @ code.qt.io

모든 Qt 예제, Qt Quick 데모 - RESTful API 클라이언트RESTful API 서버도참조하세요 .

© 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.