대부분의 WAS는 한두 개의 API로 끝나지 않는다. 여기에 더해 데이터베이스와 연결하기 위한 코드, 테스트 코드 등을 작성해야 할 필요가 있다면 각기 다른 목적을 지닌 대량의 코드들이 한 모듈에 몰릴 것이다.
필자가 코딩할 때 가장 많이 생각하는 것은 DRY(Don't Repeat Yourself)와 '비슷한 것들은 따로 모아두기'다. 이번 챕터에선 후자의 작업을 해 볼텐데, API를 위한 별도의 모듈을 만들어 함수를 옮기고, app.py
에서 이를 import해 add_url_rule
로 라우팅을 수행할 것이다. 스냅샷
처음 시도했던 건 api.py
에서 app.py
의 app
객체를 import해서 @app.route
하는 것이었는데, api.py
의 여러 정의문들을 실행시켜주기 위해 import를 수행하니 circular import(두 모듈이 서로를 import)하는 모양이 나와서 add_url_rule
을 써먹었다.
API들이 모듈로 분리가 되어서 전보다 나아진 것은 맞지만, 어차피 이것도 API가 많아지기 시작하면 코드가 몰리는 현상을 해결하기는 어렵다. 아예 API를 다루는 부분을 패키지로 만들고, 비슷한 기능을 하는 view function들끼리 적절히 모듈에 모아두는 것이 나아 보인다. 스냅샷
오