전공영역 공부 기록

Flask restful API 파일 업로드 구현

악분 2020. 11. 18. 08:17
반응형

 

 

Flask restful API모듈을 사용하여 파일 업로드를 간단하게 구현하는 방법을 소개합니다.

 

영상: https://youtu.be/nHxlRA8TrUo

▶노트북 사양과 녹화 환경이 좋지 않아 화질이 다소 낮습니다.

 


1. 준비

2가지 프로그램이 설치되어 있어야 합니다.

 

1. Pycharm 설치: 파이썬 코딩에 사용

2. PostMan 설치: 파일 업로드 요청에 사용

 


 

2. 프로젝트 생성과 파이썬 패키지 설치

pycharm으로 프로젝트를 생성하고 개발에 필요한 파이썬 패키지를 설치합니다.

 

 

pycharm을 실행하고 New Project메뉴를 클릭하여 새로운 프로젝트 생성을 시작합니다.

그림1 프로젝트 생성

 

프로젝트 이름을 입려갛고 Create버튼을 클릭합니다. Pycharm은 프로젝트를 생성할 때 가상환경을 자동으로 생성해주므로 프로젝트 관리에 매우 편합니다.

그림2 프로젝트 이름 설정

 

프로젝트가 실행 된 후, 왼쪽 아래 Terminal메뉴를 클릭하고 flask, flask-restful패키지를 설치합니다.

그림3 파이썬 패키지 설치

 

 

 


 

3. 파일 업로드 API함수 정의

공식문서를 참고하면서 API함수 골격을 생성합니다.

 

 

공식문서에 친절히 함수 골격을 제공합니다.

그림4 공식문서에서 제공하는 API 골격(출처:  https://flask-restful.readthedocs.io/en/latest/quickstart.html#a-minimal-api )

 

공식문서 소스코드를 일부 수정하여 파이 업로드 API함수를 완성해봅시다. 아래 코드에서는 함수가 잘 실행되었는지 확인하기 위해 json으로 hello를 리턴했습니다.

그림5 Upload함수 골격 생성

 

post맨으로 upload주소를 입력하면 hello 메세지가 잘 출력됩니다.

그림6 postman 실행결과


 

4. 사용자 요청 파싱

공식문서를 참고하여 파일 요청을 받는 과정을 구현합니다.

 

 

flask공식문서에서는 reqparse모듈을 사용하여 요청을 파싱하는 과정을 소개하고 있습니다. 사용방법은 간단합니다. RequestParser객체를 생성하고 파싱할 변수와 타입을 add_argument함수로 설정하면 됩니다. 그리고 마지막으로 parse_args함수를 호출해서 파싱한 결과를 가져오면 됩니다.

그림7 사용자 요청 파싱(출처: 출처:  https://flask-restplus.readthedocs.io/en/stable/parsing.html )

 

공식문서 소스코드를 일부 수정해서 사용자 요청을 구현했습니다. 주의사항은 location을 수정해야 합니다. 파일을 받기 위해서는 location필드를 files로 설정해야 합니다. 사용자가 전송한 파일은werkzeug.datastructures.FileStorage 클래스 타입으로 파싱됩니다.

그림8 사용자가 전송한 파일 파싱

 

postman에서 파일을 전송하기 위해서는 Body -> form-data -> Key에서 file타입으로 설정하고 전송할 파일을 선택하면 됩니다. 잘 실행되면 null이 리턴됩니다.

그림9 postman 파일 전송 결과

 

 

 

 

반응형