달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

REST API가 기능 또는 기술인줄 알았다.

 

REST API는 규약이자 형식이며 지침이다. 프로토콜 조차도 되지 않는다. 프로토콜은 지키지 않으면 동작을 안하지만 REST API는 지키지 않는다고 동작을 안하는 것은 아니다. 그럼에도 불구하고 우리는 REST API를 지켜야 한다.

 

함수명과 인자값, 리턴값으로 무슨일을 하는 함수인지 알 수 있는 함수명 명명 규칙과 비슷하다. 안지킨다고 제재를 가하진 않지만 일하기에 불편을 감수해야 한다. 물론 혼자하는 일이라면 불편을 감수해도 괜찮다. 하지만 SW는 이제 혼자할 수 있는 규모를 벗어난 큰일이 되어 버렸기 때문에 우리는 항상 팀작업을 한다. 팀작업 아래에서는 규약과 형식을 지키는 것이 중요하다. 안지키면 지금도 욕먹지만 미래의 누군가에게도 오지게 욕을 먹는다. 

 

https://saengjja.tistory.com/370

 

REST? RESTful?(去去去中知 行行行裏覺)

'갑분싸'로 웹을 하게 되었는데 REST, RESTful이 뭔지 개념이 없다. ㅋ~~ 사실 웹자체에 개념이 없다. ㅎㅎ 거거거중지 행행행리각 - 가고 가고 가는 가운데 알게 되고 행하고 행하고 행하다보면 깨닫게 된다 - 란..

saengjja.tistory.com

 

 

Flask의 Blueprint는 쉽게 말해 모듈을 나누는 역할을 한다. 한 모듈에 거대하게 집중되어 있는 REST API method를 상상해보자 한 파일만 천 라인이 넘어간다면 보기 힘들 것이다. Blueprint를 이용해서 REST API의 URI에 맞게 모듈을 나누어 관리를 쉽게 하는 것도 좋은 방법일 것이다. 필요할 때 분리된 모듈을 버전별로 관리할 수도 있다.

 

Flask Blueprint를 사용하여 모듈을 기능별로 분리

 

Blueprint를 사용하기 전의 폴더 구조와 사용후의 폴더 구조를 설명했으니 이젠 바뀐 코드를 보자

webapp 폴더 아래의 __init__.py 파일

Blueprint를 적용하기 전의 __init__.py

Flask 객체인 app만 선언했다.

 

 

Blueprint 적용 후의 __init__.py

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 파일

Blueprint 적용 후

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/

 

Modular Applications with Blueprints — Flask Documentation (1.0.x)

Modular Applications with Blueprints Changelog Flask uses a concept of blueprints for making application components and supporting common patterns within an application or across applications. Blueprints can greatly simplify how large applications work and

flask.palletsprojects.com

한글 번역 사이트 ---> https://flask-docs-kr.readthedocs.io/ko/latest/blueprints.html#id3

 

블루프린트를 가진 모듈화된 어플리케이션 — Flask 0.11-dev documentation

블루프린트는 리소스 또한 제공할 수 있다. 때때로 여러분은 단지 리소스만을 제공하기 위해 블루프린트를 사용하고 싶을 수도 있다. 블루프린트 리소스 폴더 보통 어플리케이션처럼, 블루프린트는 폴더안에 포함되도록 고려된다. 다수의 블루프린트이 같은 폴더에서 제공될 수 있지만, 그런 경우가 될 필요도 없고 보통 권고하지 않는다. 폴더는 보통 __name__ 인 Blueprint 에 두번째 인자로 생각된다. 이 인자는 어떤 논리적인 파이썬 모듈이나 패키지가 블루프

flask-docs-kr.readthedocs.io

 

Posted by 생짜
|