[python] Django REST framework에서의 모바일 앱과의 통신 방법

개요

Django REST Framework(DRF)는 Django 기반의 웹 애플리케이션을 빠르고 쉽게 RESTful API로 개발할 수 있도록 도와주는 프레임워크입니다. 이번 글에서는 DRF를 사용하여 모바일 앱과의 통신을 어떻게 구현할 수 있는지에 대해 알아보겠습니다.

API 설계

먼저, 모바일 앱과의 통신을 위한 API를 설계해야 합니다. API 설계는 애플리케이션의 요구사항과 모바일 앱의 요구사항을 고려하여 진행되어야 합니다.

예를 들어, 사용자 정보를 받아오는 API를 설계한다고 가정해봅시다. 이 API는 모바일 앱에서 사용자의 로그인 정보를 전달하면 서버에서 사용자 정보를 검증하여 응답으로 사용자 데이터를 제공하는 역할을 합니다. 따라서 다음과 같은 API 설계가 나올 수 있습니다.

API Endpoint: /api/user/login
Method: POST
Request Body:

{
    "email": "example@example.com",
    "password": "password123"
}

Response Body:

{
    "id": 1,
    "name": "John Doe",
    "email": "example@example.com"
}

이와 같은 방식으로 필요한 API를 설계하여야 합니다.

API 구현

API 설계가 완료되면, DRF를 사용하여 해당 API를 구현할 수 있습니다. Django에서는 views.py 파일에서 API를 정의하고, DRF의 Serializer를 이용하여 데이터를 직렬화하거나 역직렬화할 수 있습니다.

위에서 설계한 예시 API를 DRF를 사용하여 구현하는 코드는 다음과 같습니다:

# views.py

from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['POST'])
def login(request):
    email = request.data.get('email')
    password = request.data.get('password')
    
    # 사용자 정보 검증 로직
    
    user = authenticate(username=email, password=password)
    
    if user is not None:
        # 사용자 정보 직렬화
        serializer = UserSerializer(user)
        
        return Response(serializer.data)
    else:
        return Response({'error': 'Invalid credentials'}, status=status.HTTP_401_UNAUTHORIZED)

위 코드에서 @api_view 데코레이터를 사용하여 해당 view 함수가 어떤 HTTP 메서드를 처리할 것인지 지정할 수 있습니다. request.data를 통해 POST 요청의 body 데이터에 접근할 수 있으며, 해당 데이터를 검증하고 응답으로 직렬화된 사용자 정보를 반환합니다.

모바일 앱과의 통신

API의 구현이 완료되면 모바일 앱에서 해당 API에 요청을 보낼 수 있습니다. 모바일 앱에서는 HTTP 클라이언트를 이용하여 API에 요청을 보내고, 응답을 받아서 처리할 수 있습니다.

아래는 Python 기반의 모바일 앱에서 위에서 구현한 API에 요청을 보내는 예시 코드입니다:

import requests
import json

url = 'https://example.com/api/user/login'
data = {
    'email': 'example@example.com',
    'password': 'password123'
}

response = requests.post(url, data=json.dumps(data), headers={'Content-Type': 'application/json'})

if response.status_code == 200:
    user_data = response.json()
    # 사용자 정보 처리 로직
else:
    error_data = response.json()
    # 에러 처리 로직

위 코드에서는 requests 라이브러리를 사용하여 API에 POST 요청을 보냅니다. 요청 데이터는 JSON 형식으로 변환하여 전송하고, 응답의 상태 코드를 확인하여 성공적인 응답인 경우 사용자 데이터를 처리하고, 그렇지 않은 경우에는 에러를 처리합니다.

결론

Django REST Framework를 사용하여 모바일 앱과의 통신을 구현하는 방법에 대해 알아보았습니다. API 설계부터 DRF를 이용한 구현, 그리고 모바일 앱에서의 요청 보내기까지 다양한 과정을 거치게 됩니다. 이를 통해 웹 애플리케이션과 모바일 앱 간의 원활한 통신이 이루어질 수 있습니다.

참고 자료