service 단이나 model 단에서 키에러가 나는 것을 잡아주기 위해 controller 에서 key_error 혹은 key의 type_error 를 잡아줄 수 있는 방법을 모색해보았다.
결국 이런 라이브러리를 만들게 되었다.
controller 상단, 함수 시작하자 마자 부분
try:
body = request.json
essens_params = {
int : body['seller_id'],
int : body['action_id']
}
check_check = check_param(essens_params)
if check_check:
return error_code(check_check)
except TypeError as exception:
return error_code({'error':'C0006', 'programming_error':exception})
except Exception as exception:
return error_code({'error':'C0001', 'programming_error':exception})
Type Error 에서는 해당 key 가 오지 않았다는 말이고, 두 번째 error 는 기타 에러를 잡아준다. essens_params에서 key(타입)와 value(받아온 값)의 순서를 바꾸게 되면 check_params 함수로 전달되었을 때 value 가 모두 string 이 되어버리는 문제가 있어 순서를 바꿔주었다. .. 어떻게 알게 되었냐면.. 알고싶지 않다( 그래도 하나 배웠으니..!).
check_param 함수 내부는 아래와 같다.
def check_param(essens_params):
type_list = [key for key, value in essens_params.items()]
value_list = [value for key, value in essens_params.items()]
length = len(type_list)
for i in range(length):
if type(value_list[i]) != type_list[i]:
return {'error':'C0005'}
변수명 check_check 는 급해서 아무렇게나 했는데 보다보니 귀엽다.