cURL을 이용해서 API 호출하기

cURL을 이용해서 API 호출하기

Web
cURL을 이용해서 API 호출하기
Author

gabriel yang

Published

September 23, 2024


Flask로 만든 API를 호출하는 방법 중 하나는 cURL을 사용하는 것입니다. cURL은 URL을 통해 데이터 전송을 가능하게 해주는 명령줄 도구입니다. 이 글에서는 cURL을 이용해 Flask API를 호출하는 방법에 대해 설명하겠습니다.

1. Flask API 준비하기

먼저, API를 호출할 Flask 애플리케이션을 설정합니다. 아래는 PDF 파일을 이미지로 변환하여 ZIP 파일로 반환하는 간단한 Flask API 코드입니다.

from flask import Flask, request, send_file
from pdf2image import convert_from_path
import zipfile
import os
import io
import tempfile

app = Flask(__name__)

@app.route('/convert-pdf', methods=['POST'])
def convert_pdf():
    if 'pdf' not in request.files:
        return "No PDF file provided.", 400

    pdf_file = request.files['pdf']

    # 임시 파일 생성
    with tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as temp_pdf:
        pdf_file.save(temp_pdf.name)
        temp_pdf_path = temp_pdf.name

    try:
        # PDF를 이미지로 변환
        images = convert_from_path(temp_pdf_path)

        # 메모리 내에서 ZIP 파일 생성
        zip_io = io.BytesIO()
        with zipfile.ZipFile(zip_io, 'w') as zip_file:
            for i, image in enumerate(images):
                img_name = f'page_{i + 1}.jpg'
                image.save(img_name, 'JPEG')
                zip_file.write(img_name)
                os.remove(img_name)

        zip_io.seek(0)
        return send_file(zip_io, mimetype='application/zip', as_attachment=True, download_name='pages.zip')
    finally:
        os.remove(temp_pdf_path)

if __name__ == '__main__':
    app.run(debug=True)

2. cURL을 이용한 API 호출

이제 Flask API가 준비되었으니, cURL을 사용하여 이 API를 호출해보겠습니다.

2.1 cURL 설치 확인

먼저, cURL이 설치되어 있는지 확인합니다. 터미널에서 다음 명령어를 입력해 보세요:

curl --version

cURL의 버전 정보가 출력되면 설치된 것입니다. 설치되어 있지 않다면, 각 운영체제에 맞는 방법으로 cURL을 설치합니다.

2.2 PDF 파일 준비

API 호출에 사용할 PDF 파일을 준비합니다. 예를 들어, sample.pdf라는 이름의 PDF 파일을 현재 디렉토리에 저장합니다.

2.3 cURL 명령어 실행

아래의 cURL 명령어를 사용하여 API를 호출합니다:

curl -X POST -F 'pdf=@sample.pdf' http://127.0.0.1:5000/convert-pdf --output pages.zip

명령어 설명

  • -X POST: HTTP POST 메서드를 사용하여 요청을 보냅니다.
  • -F 'pdf=@sample.pdf': pdf라는 이름의 필드로 sample.pdf 파일을 첨부합니다. @ 기호는 해당 파일을 참조한다는 의미입니다.
  • http://127.0.0.1:5000/convert-pdf: 요청을 보낼 Flask API의 URL입니다.
  • --output pages.zip: API로부터 받은 ZIP 파일을 pages.zip이라는 이름으로 저장합니다.

3. 결과 확인

cURL 명령어를 실행하면 pages.zip이라는 파일이 현재 디렉토리에 생성됩니다. 이 ZIP 파일을 열어보면, PDF 파일의 각 페이지가 JPG 이미지로 변환되어 저장되어 있는 것을 확인할 수 있습니다.

4. 결론

cURL은 HTTP 요청을 간편하게 테스트할 수 있는 강력한 도구입니다. Flask API와 함께 사용할 때, 데이터를 간편하게 전송하고 응답을 받을 수 있어 유용합니다.