ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Flask API 만들기
    Python/Flask 2020. 9. 1. 11:45
    반응형

    간단하게 flask 를 이용한 api  작성 법을 기록 하고자 한다. 언제 어디서 사용할지 모르니까 ! 

    설정은 굉장히 단순하며   개인적으로는 pycharm 을 사용중이다. 개발환경은 단순하게 venv 를 사용하여 프로젝트에 필요한 것을들 관리하고 파이썬 버전은 3.7 기준으로 작성 하였다. 

    pycharm 사용시 import 가 굉장히 쉬워서 pip 명령어를 치지 않아도 추가가 용이하다. IDE 를 꼭 사용해야할거 같다. 

    아나콘다를 이용한 방식도 많지만 개인적으로는 선호하지 않아서 pycharm 을 계속 사용할 예정이다. 

    간단하게 get / post  요청 하는정도로만 세팅을 했고 데이터베이스 설정이나 이런것들은 추후 프로젝트에 포함해서 다시 업로드 해야겠다. 

    # _*_ coding: utf-8 _*_
    from flask import Flask
    from flask import request
    from flask_restplus import Api ,Resource, fields
    import logging
    app = Flask(__name__)
    api = Api(app, verion='1.0.0', title='Serving API', description='Tracking Result Data Serving API')
    
    # GET 테스트 API
    @api.route('/test/<id>')
    @api.doc(params={'id':'an id'})
    class TestGetController(Resource):
       def get(self, id):
            try:
                data = { 'key1': id }
                print(data)
                return    { 'result':'Ok' }
            except:
                print("ERROR !!!")
                return {'result': 'Error'}
    # POST 테스트 API
    @api.route('/testPost')
    @api.doc(params={'id':'an id'})
    class TestPostController(Resource):
        def post(self):
            try:
                id = request.form['id']
                data = { 'key1': id }
                print(data)
                print(result.status_code)
                return { 'result':'Ok' }
            except:
                print("ERROR !!!")
    
        @api.response(403, 'Not Authorized')
        def get(self):
            api.abort(403)
    
    if __name__ == '__main__':
        # 디버깅 로그 옵션
        app.debug = True
        # 로그 환경 설정 ( 패턴, 위치 , 레벨 )
        logging.basicConfig(filename='log/project.log', level=logging.DEBUG,
                            format='[%(asctime)s][%(levelname)s] %(message)s')
        app.run()
    
    

     

    기본적으로 로그 기록 처리를 하였고 간단한 exception 처리를 추가 하였다. 그리고 샘플로 응답시 특정 http status  코드로 응답해주는것도 구현해 보았다. 

    확실히 단순하게 쓰기엔 심플하고 좋은거 같다. dJango 도 조만간 설정부터해서 전부 기록해야겠다. 

    반응형
Designed by Tistory.