REST API가 기능 또는 기술인줄 알았다.
REST API는 규약이자 형식이며 지침이다. 프로토콜 조차도 되지 않는다. 프로토콜은 지키지 않으면 동작을 안하지만 REST API는 지키지 않는다고 동작을 안하는 것은 아니다. 그럼에도 불구하고 우리는 REST API를 지켜야 한다.
함수명과 인자값, 리턴값으로 무슨일을 하는 함수인지 알 수 있는 함수명 명명 규칙과 비슷하다. 안지킨다고 제재를 가하진 않지만 일하기에 불편을 감수해야 한다. 물론 혼자하는 일이라면 불편을 감수해도 괜찮다. 하지만 SW는 이제 혼자할 수 있는 규모를 벗어난 큰일이 되어 버렸기 때문에 우리는 항상 팀작업을 한다. 팀작업 아래에서는 규약과 형식을 지키는 것이 중요하다. 안지키면 지금도 욕먹지만 미래의 누군가에게도 오지게 욕을 먹는다.
https://saengjja.tistory.com/370
Flask의 Blueprint는 쉽게 말해 모듈을 나누는 역할을 한다. 한 모듈에 거대하게 집중되어 있는 REST API method를 상상해보자 한 파일만 천 라인이 넘어간다면 보기 힘들 것이다. Blueprint를 이용해서 REST API의 URI에 맞게 모듈을 나누어 관리를 쉽게 하는 것도 좋은 방법일 것이다. 필요할 때 분리된 모듈을 버전별로 관리할 수도 있다.
Blueprint를 사용하기 전의 폴더 구조와 사용후의 폴더 구조를 설명했으니 이젠 바뀐 코드를 보자
webapp 폴더 아래의 __init__.py 파일
Flask 객체인 app만 선언했다.
api_v1 패키지와 패키지 안에 선언한 api 모듈을 추가한다.
app에 resgister_blueprint 메소드를 사용하여 api 모듈을 등록한다. 이제 app으로 전달되어 오는 requests를 api 모듈로도 보낼 수 있는 준비를 했다. url_brefix는 Blueprint로 등록한 모듈에 requests URL이 전달 될 때 URI에 자동으로 붙는 URI이다. 잘 동작을 안한다. 내가 실수한 것인지 버전 차이인지는 찾아보고 있는 중이다. url_brefix가 잘 동작한다면 api의 버전관리가 무지 편해질 것 같다. 필요 없거나 버그가 있는 api는 폐기하고 Blueprint 등록하는 곳에서 url_brefix 만 변경해주면 될 것이기 때문이다.
app_start.py 파일
app_start.py 모듈에 있던 login, register, registerinfo 등등의 requests 함수들이 모두 사라졌다. Blueprint로 해당 모듈을 생성하고 해당 모듈로 모두 분리했다.
api_v1 폴더의 __init__.py 파일
Blueprint 로 api를 생성했다.
api_v1 폴더의 기능별로 분리한 모듈 파일
실제 모듈 소스이다. 래퍼가 @app에서 @api로 바뀌었다.
이렇게 사용하여 app_start.py에서 사용하는 기능들을 모두 분리했다.
정확한 기술에 대해 알고 싶으면...
영문사이트 ---> https://flask.palletsprojects.com/en/1.0.x/blueprints/
한글 번역 사이트 ---> https://flask-docs-kr.readthedocs.io/ko/latest/blueprints.html#id3
'karma( 업 ) > Web' 카테고리의 다른 글
AWS 결제 알림 받기 (0) | 2019.11.05 |
---|---|
AWS EC2 프리티어에 요금이 발생했다!!!!! (0) | 2019.11.05 |
REST? RESTful?(去去去中知 行行行裏覺) (0) | 2019.10.21 |
부트스트랩? (0) | 2019.10.21 |
AWS EC2에 face_recognition 설치하기( dlib 오류처리 ) (0) | 2019.10.18 |