Flask 를 사용한 Rest API 서버 만들기
[POST 요청]
http://localhost:8000/test?&value1=cccc&value2=xxxx
[기동 및 POST 요청 수신]
> reqparse: argparser 인터페이스를 모델로 함
> parser.add_argument
: if required=True, 인수에 값이 필수적으로 들어가야 함 ( 들어가지 않으면 400 Error 발생 )
ex. http://localhost:8000/test?&value1=cccc => value 2에 인수 값이 들어가지 않았으므로 400 Error
: if required=False, 인수에 값이 필수적으로 들어가지 않아도 됨 ( 대신 None으로 들어옴 )
ex. http://localhost:8000/test?&value2=xxxx => value 1에 인수 값이 들어가지 않아도 에러 발생 x, 대신 None 값
> parser.parse_args
: if parse_args(strict=True), 정의되지 않은 인수 포함 시 400 Error 발생
ex. http://localhost:8000/test?&value1=cccc&value2=xx&test=test => test는 없는 파라미터임으로 400 Error 발생
: if parse_args(), 정의되지 않은 인수 포함해도 상관 x
ex. http://localhost:8000/test?&value1=cccc&value2=xx&test=test => test는 없더라도 나머지가 정상임으로 통과
> app.logger.[info/debug/warn/error]: Flask에서 제공하는 로깅
> 예외처리: 필수
# -*- coding:utf-8 -*-
from flask import Flask
from flask_restful import Api, Resource, reqparse
class TEST(Resource):
# POST 요청만 수신
def post(self):
try:
# 1. 인자값 수신
parser = reqparse.RequestParser()
parser.add_argument('value1', required=False, type=str, help='value 1')
parser.add_argument('value2', required=True, type=str, help='value 2')
# 파서가 정의하지 않은 인수 포함 시, 400 Error 발생
args = parser.parse_args(strict=True)
# 결과 반환
return {'result': args['value1']}
except Exception as e:
app.logger.error(e)
return {'error': str(e)}
# Rest URL 정의 + application 객체 생성
app = Flask('APP')
api = Api(app)
api.add_resource(TEST, '/test')
if __name__ == '__main__':
# 0. 서버 실행 / 디버그 모드 On
app.run(host='0.0.0.0', port=8000, debug=True)
[번외]
GET 요청 수신
class TEST(Resource):
# GET 요청만 수신
def get(self):
'Computer Science > Python' 카테고리의 다른 글
# python Excel에 쓰기 (0) | 2020.09.13 |
---|---|
# Flask RestAPI - 정규표현식을 이용한 파라미터 체크 (0) | 2020.09.13 |
# configuration 파일 생성 및 사용 (0) | 2020.09.12 |