Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

사용자 지정 JDBC 드라이버 업로드(Upload Custom JDBC Drivers Connection) (V2)

기존 JDBC 연결에 사용자 지정 드라이버 파일을 업로드합니다. fileName은 .jar로 끝나야 하며 본문에는 해당 파일의 바이너리 내용을 그대로 보냅니다. Content-Type은 application/octet-stream입니다.

대상 연결과 드라이버를 확인한 뒤 호출합니다. 생성 입력의 uploadedJdbcDrivers 필드를 채우는 방식이 아니라 이 엔드포인트로 파일을 전송하며, 업로드한 이름은 JDBC 연결 구성의 조회 필드에 있습니다.

HTTP 요청

POST /api/v2/connectivity/connections/{connectionRid}/uploadCustomJdbcDrivers

작업 식별자는 v2.uploadCustomJdbcDriversConnection입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:connectivity-connection-write 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
connectionRidstring필수소스라고도 부르는 Connection의 RID입니다.ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
fileNamestring필수업로드할 JDBC 드라이버의 파일 이름이며 .jar로 끝나야 합니다.cdata.jdbc.oracle.jar

요청 본문

본문은 필수 바이너리 파일 내용입니다. JSON 문자열이나 multipart 폼으로 감싸지 않습니다.

응답

업로드 요청의 응답으로 Connection을 반환합니다.

Connection의 필수 메타데이터, 워커와 내보내기 설정은 Connection 자료형을 따릅니다. 외부 시스템별 필드는 연결 구성에서 확인합니다.

가상 JDBC 연결의 응답 예시입니다.

{
  "parentFolderRid": "ri.compass.main.folder.c410f510-2937-420e-8ea3-8c9bcb3c1791",
  "configuration": {
    "type": "jdbc",
    "url": "jdbc:postgresql://db.example.com:5432/example",
    "driverClass": "org.postgresql.Driver"
  },
  "displayName": "Connection to my external system",
  "exportSettings": {
    "exportsEnabled": true,
    "exportEnabledWithoutMarkingsValidation": false
  },
  "rid": "ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b",
  "worker": {
    "type": "foundryWorker"
  }
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
UploadCustomJdbcDriversConnectionPermissionDeniedPERMISSION_DENIED403연결에 사용자 지정 JDBC 드라이버를 업로드할 수 없습니다.connectionRid
ConnectionNotFoundNOT_FOUND404지정한 연결을 찾을 수 없습니다.connectionRid

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 예시 RID와 매개변수는 실제 작업 대상으로 바꿉니다.

JDBC_DRIVER_FILE에는 업로드할 실제 JAR 파일의 경로를 지정합니다. fileName=cdata.jdbc.oracle.jar는 이름의 예시이며 실제 업로드 이름에 맞게 바꿉니다. 이름은 .jar로 끝나야 하고 URL 쿼리 값으로 인코딩해야 합니다. JAR은 대상 연결의 데이터베이스와 드라이버 클래스에 맞는 파일을 준비합니다. 본문을 JSON이나 multipart로 변환하지 않습니다.

cURL

curl -X POST \
	-H "Content-type: application/octet-stream" \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/connectivity/connections/ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b/uploadCustomJdbcDrivers?fileName=cdata.jdbc.oracle.jar" \
	--data-binary "@${JDBC_DRIVER_FILE}"

Python

Requests 라이브러리가 설치된 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "content-type": "application/octet-stream",
    "authorization": "Bearer {}".format(TOKEN)
}

with open(os.environ["JDBC_DRIVER_FILE"], "rb") as file_body:
    response = requests.post('https://{}/api/v2/connectivity/connections/ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b/uploadCustomJdbcDrivers?fileName=cdata.jdbc.oracle.jar'.format(HOSTNAME), headers=headers, data=file_body)
print(response)

Java

Apache HttpClient 4.5 API를 사용하는 UploadCustomJdbcDriversConnectionExample.java 예제입니다.

import java.io.File;
import org.apache.http.entity.FileEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

public class UploadCustomJdbcDriversConnectionExample {
    public static void main(String[] args) throws Exception {
        String HOSTNAME = System.getenv("FOUNDRY_HOST");
        String TOKEN = System.getenv("FOUNDRY_TOKEN");

        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpPost request = new HttpPost("https://" + HOSTNAME + "/api/v2/connectivity/connections/ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b/uploadCustomJdbcDrivers?fileName=cdata.jdbc.oracle.jar");
            request.addHeader("content-type", "application/octet-stream");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            request.setEntity(new FileEntity(new File(System.getenv("JDBC_DRIVER_FILE"))));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js의 ES 모듈(.mjs)에서 사용합니다. 파일을 바이트로 읽어 전송하며 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

import { readFileSync } from "node:fs";

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/connectivity/connections/ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b/uploadCustomJdbcDrivers?fileName=cdata.jdbc.oracle.jar`, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/octet-stream',
        'Authorization': `Bearer ${TOKEN}`,
    },
    body: readFileSync(process.env.JDBC_DRIVER_FILE)
}).then((response) => {
    console.log(response)
});

PowerShell

오류가 발생하면 예제를 중단하도록 $ErrorActionPreference를 설정합니다.

$ErrorActionPreference = 'Stop'
$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

$headers = @{
    "authorization" = "Bearer $TOKEN"
}

$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/connectivity/connections/ri.magritte..source.c078b71b-92f9-41b6-b0df-3760f411120b/uploadCustomJdbcDrivers?fileName=cdata.jdbc.oracle.jar" `
	-Method Post `
	-Headers $headers `
	-ContentType application/octet-stream `
	-InFile $env:JDBC_DRIVER_FILE

$response.content