본문 바로가기
Restful API

[Restful API] 이미지와 내용을 포스팅하는 API 만들기

by dong_su 2023. 12. 18.

 

 

-> postman에서 http method는 post, Body의 form-data에 File으로 파일 세팅, Text로 내용을 세팅해논다.

 

def post(self) :

        file = request.files.get("photo")
        content = request.form.get("content")

        if file is None :
            return {"error" : "파일이 없습니다."}, 400
        
        current_time = datetime.now()

        new_file_name = current_time.isoformat().replace(":", "_") + ".jpg"

        file.filename = new_file_name

        s3 = boto3.client("s3", aws_access_key_id = Config.AWS_ACCESS_KEY_ID,
                     aws_secret_access_key = Config.AWS_SECRET_ACCESS_KEY)

        try :
            s3.upload_fileobj(file, Config.S3_BUCKET, file.filename, 
                              ExtraArgs = {"ACL" : "public-read",
                                           "ContentType" : "image/jpeg"})

        except Exception as e :
            print(e)
            return {"error" : str(e)}, 500
           

        try :
            connection = get_connection()

            query = '''
                    insert into img_test
                    (imgUrl, content)
                    values
                    (%s, %s);
                    '''
            
            imgUrl = Config.S3_LOCATION + new_file_name

            record = (imgUrl, content)

            cursor = connection.cursor()
            cursor.execute(query, record)
            connection.commit()

            cursor.close()
            connection.close()

        except Exception as e :
            print(e)
            cursor.close()
            connection.close()
            return {"error" : str(e)}, 500

        return {"result" : "success", "imgUrl" : imgUrl}, 200

-> vscode엔 위 코드를 작성하고 실행한다.


 

완료 화면

-> 저 url을 들어가도 확인가능하고 AWS의 S3에 해당 버킷에 들어가도 업로드 된 사진을 확인 가능하다.