버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

본 프로젝트는 NiFi에서 제공하는 API를 Java 호출할 수 있도록 Java API를 제공합니다. Github Repository는 https://github.com/TheOpenCloudEngine/nifi-api-java 입니다.

Overview

  • NiFi 소스코드를 다운로드하여 swagger.json 파일의 위치를 확인합니다.
  • Swagger Codegen으로 swagger.json 파일을 로딩하여 Java로 변환합니다.
  • 변환된 코드에서 NiFi 상위버전 부터 SSL 필수이므로 SSL 인증서 처리 및 OAuth 인증 처리 부분을 수정합니다.
    • OkHTTP를 사용하므로 SSL을 무시하도록 하고 Basic Auth, OAuth2를 추가하도록 합니다.

Swagger Codegen

Swagger Codegen을 이용하여 Client API를 생성합니다.


코드 블럭
languagetext
linenumberstrue
# cd nifi-1.19.1
# mvn -Dmaven.test.skip=true install
# wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
# java -jar swagger-codegen-cli-2.2.1.jar generate -i ../nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/target/swagger-ui/swagger.json -l java

...

Requirements

  • Apache Maven

Installation

Maven Install을 통해서 JAR 파일을 다음과 같이 생성합니다.

코드 블럭
mvn install

API 호출

API 호출을 위해서 Basic Auth로 Access Token을 얻습니다.

코드 블럭
languagejava
linenumberstrue
import io.swagger.client.*;
import io.swagger.client.auth.*;
import io.swagger.client.model.*;
import io.swagger.client.api.AccessApi;

import java.io.File;
import java.util.*;

public class AccessApiExample {

    public static void main(String[] args) {
        AccessApi accessApi = new AccessApi();
        ApiClient client = new ApiClient(true);
        client.setDebugging(true);
        client.addDefaultHeader("Authorization", getBasicAuthenticationHeader("admin", "adminadminadmin"));
        client.setBasePath("https://localhost:8443/nifi-api");

        accessApi.setApiClient(client);
        String accessToken = accessApi.createAccessToken("admin", "adminadminadmin");
    }
}

Access Token을 이용하여 API를 호출합니다.

코드 블럭
languagejava
linenumberstrue
import io.swagger.client.*;
import io.swagger.client.auth.*;
import io.swagger.client.model.*;
import io.swagger.client.api.AccessApi;

import java.io.File;
import java.util.*;

public class ResourcesApiExample {

    public static void main(String[] args) {
        ResourcesApi api = new ResourcesApi();

        ApiClient client = new ApiClient(true);
        client.setDebugging(true);
        client.setBasePath("https://localhost:8443/nifi-api");
        client.addDefaultHeader("Authorization", String.format("Bearer %s", accessToken));
        api.setApiClient(client);

        ResourcesEntity response = api.getResources();
    }
}