코드 예제 - 다국어 압축 코드

언어 및 시나리오별로 분류된 압축 API 코드 예제로, Python, Node.js, Java, Go, curl을 다루며 AI 데이터 전처리, 배치 콜백, 암호화 압축 등의 모범 사례가 포함되어 있습니다

Python 예제

requests 라이브러리를 사용하여 압축 API를 호출하며, 단일 파일, 배치 및 비동기 세 가지 모드를 지원합니다

단일 파일 압축

import requests

resp = requests.post(
    "https://api.uglypear.com/v1/compress",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    files={"file": open("input.pdf", "rb")},
    data={"quality": "high"}
)
print(resp.json())

배치 압축

import requests

files = [("files", open(f, "rb")) for f in ["a.pdf", "b.pdf", "c.pdf"]]
resp = requests.post(
    "https://api.uglypear.com/v1/batch/compress",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    files=files,
    data={"quality": "medium", "callback_url": "https://yourapp.com/callback"}
)
print(resp.json())

비동기 압축

import asyncio
import aiohttp

async def compress(path):
    async with aiohttp.ClientSession() as session:
        with open(path, "rb") as f:
            data = aiohttp.FormData()
            data.add_field("file", f)
            data.add_field("quality", "high")
            async with session.post(
                "https://api.uglypear.com/v1/compress",
                headers={"Authorization": "Bearer YOUR_API_KEY"},
                data=data
            ) as resp:
                return await resp.json()

asyncio.run(compress("input.pdf"))

Node.js 예제

axios + form-data를 사용하여 스트리밍 업로드 및 배치 처리를 구현합니다

스트리밍 압축

const fs = require("fs");
const FormData = require("form-data");
const axios = require("axios");

const form = new FormData();
form.append("file", fs.createReadStream("input.pdf"));
form.append("quality", "high");

axios.post("https://api.uglypear.com/v1/compress", form, {
    headers: {
        ...form.getHeaders(),
        Authorization: "Bearer YOUR_API_KEY"
    }
}).then(res => console.log(res.data));

배치 처리

const fs = require("fs");
const FormData = require("form-data");
const axios = require("axios");

const form = new FormData();
["a.pdf", "b.pdf", "c.pdf"].forEach(f =>
    form.append("files", fs.createReadStream(f))
);
form.append("quality", "medium");

axios.post("https://api.uglypear.com/v1/batch/compress", form, {
    headers: { ...form.getHeaders(), Authorization: "Bearer YOUR_API_KEY" }
}).then(res => console.log(res.data));

Java 예제

OkHttp를 사용하여 multipart 업로드 압축 요청을 보냅니다

OkHttpClient client = new OkHttpClient();

RequestBody body = new MultipartBody.Builder()
    .setType(MultipartBody.FORM)
    .addFormDataPart("file", "input.pdf",
        RequestBody.create(new File("input.pdf"),
            MediaType.parse("application/pdf")))
    .addFormDataPart("quality", "high")
    .build();

Request request = new Request.Builder()
    .url("https://api.uglypear.com/v1/compress")
    .header("Authorization", "Bearer YOUR_API_KEY")
    .post(body)
    .build();

try (Response response = client.newCall(request).execute()) {
    System.out.println(response.body().string());
}

Go 예제

표준 라이브러리 net/http와 mime/multipart를 사용하여 요청을 생성합니다

package main

import (
    "bytes"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    file, _ := os.Open("input.pdf")
    defer file.Close()

    var buf bytes.Buffer
    writer := multipart.NewWriter(&buf)
    part, _ := writer.CreateFormFile("file", "input.pdf")
    io.Copy(part, file)
    writer.WriteField("quality", "high")
    writer.Close()

    req, _ := http.NewRequest("POST",
        "https://api.uglypear.com/v1/compress", &buf)
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Content-Type", writer.FormDataContentType())

    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    println(string(body))
}

curl 예제

명령줄에서 압축 API를 빠르게 호출하며, 스크립트 및 자동화 테스트에 적합합니다

curl -X POST https://api.uglypear.com/v1/compress \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@input.pdf" \
  -F "quality=high"

시나리오별 모범 사례

일반적인 비즈니스 시나리오에 대한 권장 연동 방식

AI 데이터 전처리 파이프라인 연동

데이터 저장 전 압축 API를 호출하여 문서/이미지를 전처리하고 스토리지 사용량을 줄입니다. 필요할 때 압축을 해제하여 모델 학습에 사용하고 읽기 경로를 가속화합니다.

# 파이프라인 연동: 저장 전 압축
result = comp.compress_file("dataset/doc.pdf", quality="high")
upload_to_storage(result.output_path)

배치 압축 + 콜백 알림

배치 인터페이스는 비동기로 처리되며, 작업 완료 후 callback_url로 결과를 푸시하여 긴 연결 대기를 방지합니다.

resp = requests.post(
    "https://api.uglypear.com/v1/batch/compress",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    files=files,
    data={"callback_url": "https://yourapp.com/callback"}
)

비밀번호 암호화 압축

민감한 파일에 password 매개변수를 추가하면 서버에서 암호화 압축을 수행하여 전송 및 저장 보안을 보장합니다.

curl -X POST https://api.uglypear.com/v1/compress \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@input.pdf" \
  -F "password=YourStrongPass"

대용량 파일 분할 업로드 압축

초대용량 파일을 먼저 분할 업로드한 후 전체 압축을 트리거하여 단일 요청 시간 초과를 방지하고 성공률을 높입니다.

// 분할 업로드 + 압축 트리거
for (const chunk of chunks) {
    await uploadChunk(chunk);
}
await axios.post("https://api.uglypear.com/v1/compress",
    { upload_id, quality: "high" }, { headers });

GitHub 저장소

더 많은 전체 예제 프로젝트가 곧 오픈소스로 공개됩니다

uglypear-compressor-examples

Python, Node.js, Java, Go, curl의 완전한 실행 가능 예제 프로젝트가 포함되어 있으며 곧 오픈소스로 공개됩니다. 미리 필요하신 경우 기술 지원에 문의하세요.

문의하기

전체 API 문서 보기

인터페이스 매개변수, 오류 코드 및 온라인 디버거를 확인하여 압축 API의 모든 기능을 빠르게 익히세요

API 문서 보기 빠른 시작 SDK 다운로드