Django REST API 서비스 플랫폼 고려 - DRF, Django-ninja

Django를 이용하여 REST API 서비스를 구상한다면 제공되는 플랫폼이 있다. 대표적으로 DRF와 요즘 인기가 좋다는 FastAPI 기술과 유사하게 서비스가 제공되는 Django-ninja 플랫폼이 있다. 간단한 소개 자료만 저장해 두려 한다. - 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 )

DRF - Django REST Framework

말 그대로 REST 를 아주 쉽게 장고에서 제공하기 위해 만들어진 플랫폼이다. 말대로 쓰기가 쉽고 확장성도 뛰어나다. 이제 알았지만 Flask 기반으로 일단 전체 서비시의 프로토타입핑은 아주 빨리 할 수 있지만 사용자 관리 그룹 관리 인증등등 아주 기초적인 프레임워크를 구현해 나가는 것이 시간 낭비로 느껴지는 부분이 있다. 무조건 Django 프레임워크를 써야 하는 것은 아니지만 특별한 요구사항이 없다면 기본적으로 출발점을 장고로 하는 것이 무난해 보인다. 

 

물론 파이썬 기반의 기술스택을 가지고 싶은 기업이라면 더더욱.... (JS 기반인 경우라면 나름 Next.JS React 등등 시도해 볼 만한 기술들도 많이 있다)

 

아직 속도의 문제가 없다면, (대부분 초기 개발의 경우 당연히 이 상태겠죠)

DRF로 구현을 해 두고, 서비스를 운영해 보자.

 

설치는

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

settings.py 에 다음을 추가해 준다.

INSTALLED_APPS = [
    ...
    'rest_framework',
]

URL을 별도로 관리하고 싶다면 아래처럼 urls.py 에 수정을 해 주면 된다.

urlpatterns = [
    ...
    path('api-auth/', include('rest_framework.urls'))
]

여기 모든 내용은 아래 공식 사이트에서 정보를 얻을 수 있다.

 

https://www.django-rest-framework.org/

 

Home - Django REST framework

 

www.django-rest-framework.org

여기도 계속 뒤처지게 그냥 두지는 않을 것으로 생각되는데...기술은 발전해 나가니 

나는 그냥 어디든 한곳에서 아주 전문가가 되는 것이 낫다고 본다. 철새처럼 옮기는 것은...쩝...

사용예는 그냥 Example을 따라 가면 되는데,

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']

 

여기에 나오는 Serializer 개념을 좀 이해해야 한다고들 하시네...

쉽게 얘기해서 

JSON => Class 형태로 변경해 주는 것

 

으로 이해하면 된다고.

구현은 간단한 몇개의 예제를 습득해 보도록 하자. 

Django-ninja

FastAPI 기반의 속도 빠름을 체감하는 개발자라면 한 번 씩 검토를 해 봐야 할 듯 하다. 

여기저기 찾아보니 검색에서 딱 눈에 띄는 제목이 있네

DRF는 이제 잊으세요. Django-ninja 의 탄생

https://dingrr.com/blog/post/drf%EB%8A%94-%EC%9D%B4%EC%A0%9C-%EC%9E%8A%EC%9C%BC%EC%84%B8%EC%9A%94-django-ninja-%EC%9D%98-%ED%83%84%EC%83%9D

 

DRF는 이제 잊으세요. Django-ninja 의 탄생 | 블로그 | 딩그르르

DRF는 이제 잊으세요. Django-ninja 의 탄생

dingrr.com

 

이미 나름 잘 정리 해 둔 페이지로 들어가서 공부해 보는 것이 좋을 듯...장점으로 결론을 내리는 구문만 여기에 옮겨다 둔다. 

Django에 광범위한 생태계 각종 라이브러리들, Django ORM 이 지원하는 다양한 기능 및 DB 스키마 버저닝... 안정적인 웹 서버 서빙능력 등을 포기하고 싶지 않은 상황에 위와 같은 장점을 사용하고 싶다면, 지금 한번 사용해보시는 것이 어떨까요? 강추합니다!

 

 

아무거나 원샷~~

Bianca Gasparoto 님의 사진, 출처: Pexels