(flask) jsonschema 를 이용해서 request.json 검사하기

API에서 파라미터의 유효성 검사는 필수적인 요소이긴 하지만, 개발자로서 여간 귀찮은 일이 아닐 수 없다. API의 양이 많을수록 할 일은 많아진다. 세세하게 체크할 부분은 해야하지만 기본적으로 파라미터 유무, 파라미터의 데이터 형을 체크하는 부분이 필요했다. API는 기본적으로 JSON 을 POST로 받는 식으로 구성되어 있어서 JSON을 검증하는 부분이 필요했다. JSON 검증을 위해서 jsonschema 를 활용할 수 있다는 것을 알았는데, 문제는 라이브러리를 써서 검증할 수 있지만, 일단 스키마가 있어야 한다는 사실이다. jsonschema 라이브러리는 단순히 스키마에 대한 검증을 해주는 도구이다.

flask logger decorator(데코레이터)와 함께 사용하기

기본로그 세팅하기 로그에 대한 부분이 늘 걱정이긴 한데, 사실 따로 python logger 클래스를 사용해서 로그는 남기는 클래스를 만들고 만드는 프로젝트 마다 붙여서 사용하는 식으로 했었는데 이번에 flask 에 있는 logger 를 이용해 보기로 했다. 기본적으로 다음과 같은 몇개의 핸들러를 제공하고 있다.  FileHandler  – 로그 메시지를 파일에 남긴다.  RotatingFileHandler – 로그메시지를 파일에 남기고, 특정수 이상이면 다음파일로 넘겨서 로그를 만드는 핸들러, maxBytes 라는 생성자의 파라미터가 있음. NTEvenetLogHandler – 윈도우 시스템의 시스템 이벤트 로그에 남긴다. 만약 윈도우에 배포된다면 사용해라. SysLogHandler –  유닉스 syslog 로그핸들러를 선택하고 나면, 아래와 같이 세팅을 해줘야 한다. app.logger 인스턴스에 addHandler() 메서드를 이용해서 선택한 로그핸들러를 등록하는 작업이라고 보면된다.  일별로그를 파일에 남겨야 하는 요구사항이 있어서 레퍼런스를 찾던중에[TimedRotatingFileHandler](https://docs.python.org/2/library/logging.handlers.html) 를 찾았는데 시간과 관련지어서 로그를 분리해주는 핸들러이다. 다음과 같이 핸들러 등록작업을 해주었다.  위에서는 app.debug 에 따라서

[Cocoa Design pattern] 23. Decorator

![](http://ash84.net/wp-content/uploads/1/cfile23.uf.205946374E1D407127DB25.jpg)  **데코레이터란?** – 서브클래싱을 통해 기능을 추가하는 대신 컴포지션을 통해서 공통적으로 재사용 가능한 기능을 객체에 추가 – 서브 클래싱은 컴파일 단계에서 정의해야 하지만, 데코레이터는 런타임 단계에서 추가 및 구성 가능함.  ex) NSScrollView  **패턴이 만들어진 동기 ** – 기존 객체에 여러가지 기능을 추가하고 싶음. 그러나, 클래스 수의 증가가 문제임.