파비의 매일매일 공부기록

Two Scoops of Django - #16장 본문

Study/Python

Two Scoops of Django - #16장

fabichoi 2021. 6. 17. 23:30

이번장은 REST API 구현하기에 대한 내용이다.

나는 REST Framework를 사용하는데, 그걸 사용 안 하고 구현하는 걸 의미하는 걸로 보인다.

 

패키지 API를 제적하기 위한 패키지들 : django-rest-framework, django-tastypie, django-braces, django-jsonview 활용

 

1. 기본 REST API 디자인의 핵심 : 각 액션에 따른 메서드를 활용하면 됨. 책에 표로 정리되어 있음. 에러코드도 포함

 

2. 간단한 JSON API 구현 : 일단 모델을 만들고, serializer 클래스를 정의. 엇? django-rest-framework 쓰는구나. 그리고 view를 정의하면 된다. 실무에서 사용하는 방식과 거의 동일. 추가로 permission이 필요하긴 하다.

 

3. REST API 아키텍처 : 프레임워크 등을 이용해서 빠르게 API 구현은 어렵지 않으나 각 프로젝트에 맞게 변형하고 관리는 쉽지 않을 수 있다. 

 - 프로젝트 코드들은 간결하게 정리되어 있어야 함 : 말 그대로 간결하게 정리 필요.

 - 앱의 코드는 앱 안에 둘 것 : 뷰나 뷰셋이 너무 많을 경우 분할 필요. 그러나 너무 분할해서 작게 나뉠 경우 앱이 너무 많아서 관리가 어려울 수 있음.

 - 비즈니스 로직을 API 뷰에서 분리할 것 : 이건 내가 잘 안 되는 듯.. 차후 로직 짤 때 유의해야 할 점!

 - API URL을 모아두기 : apiv1.py 등의 파일을 따로 만들어 관리하는 걸 추천

 - API 테스트 : 장고 테스트 스위트 이용할 것. 난 이게 아직 안돼서(안 해봐서) 맨날 Postman으로 깔짝깔짝 호출 날리는 중. 사실 일의 효율성이 매우 떨어짐 ㅠㅠ

 - API 버저닝 : 버전 정보마다 따로 관리하여 기존 로직과는 무관하게 유지할 것.

 

4. 서비스 지향 아키텍처 : SOA 관점에서 웹 앱은 독립적이고 분리된 컴포넌트로 구성됨. 각 컴포넌트는 독립된 서버 또는 클러스터에서 구동되며 이러한 각 컴포넌트는 서로 커뮤니케이션을 함. SOA 스타일을 사용하는 주된 이유는 많은 개발자가 상호 충돌 없이 서로 분리된 컴포넌트 작업을 하기가 용이하기 때문.

 

5. 외부 API 중단하기

 - 1단계 : 사용자들에게 서비스 중지 예고 : 6개월 ~ 1달 정도 필요

 - 2단계 : 410 에러 뷰로 API 교체 : 중지되었을 경우 표시

 

6. REST 프레임워크들에 대한 평가

 - 현실적인 표준은 내가 사용하는 django-rest-framewok

 - 보일러 플레이트(최소한의 변경으로 여러 곳에서 재사용되며, 반복적으로 비슷한 형태를 띠는 코드 할 것)를 얼마나 쓸지 고민할 것

 - RPC(Remote Procedure Call) 구현이 쉬운가? : 선택한 프레임 워크에 따라 RPC 호출의 난이도가 달라질 수 있으므로 신중하게 생각해봐야 한다.

 - 클래스 기반 뷰 VS 함수 기반 뷰 : 개발자 성향에 따라 다름

 

7. API에 접속 제한 : 시간제한을 의미. 아래에 제한하는 이유를 나열

 - 제한 없는 API 접속은 위험 : 리소스를 파악해야 함.

 - REST 프레임워크는 반드시 접속 제한이 필요 

 - 비즈니스 계획으로서의 접속 제한

 

8 자신의 REST API 알리기 : API 제작 후에는 다른 개발자 및 회사들에게 이를 안내해야 함.

 - 문서 : 반드시 쉽게 이용 가능한 코드 예제를 포함할 것. 여러 도구를 활용하면 좋음

 - 클라이언트 SDK 제공 : 여러 언어를 지원하는 SDK를 제공하여 고객 입장에서 API 사용성을 높일 수 있음.

 

반응형

'Study > Python' 카테고리의 다른 글

Two Scoops of Django - #18장  (0) 2021.06.19
Two Scoops of Django - #17장  (0) 2021.06.18
Two Scoops of Django - #15장  (0) 2021.06.16
Two Scoops of Django - #14장  (0) 2021.06.15
Two Scoops of Django - #13장  (0) 2021.06.14
Comments