API (Application Programming Interface)란 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말한다. 즉, 코드를 통해 다른 시스템에서 제공하는 기능이나 서비스를 쉽게 사용할 수 있도록 도와주는 시스템과 시스템간의 인터페이스이다.
예를들어, 카카오 지도 같은 Open API를 생각해보면, 우리가 직접 지도의 기능을 개발하지 않아도, 카카오에서 제공하는 기본적인 지도의 기능들을 내가 작성하는 웹사이트에서 활용할 수 있다.
REST(Representational State Transfer) API란 웹 설계의 장점을 활용할 수 있는 아키텍쳐 방법론중에 하나로 URI와 HTTP Method를 활용해 자원을 표현한다.
Django REST Framework란 Python 기반의 Django로 REST API를 생성할 수 있도록 도와주는 프레임워크이다.
RESTful한 API 설계시 주의할 점
DRF를 설치한다
$ pip install djangorestframework
settings.py 파일에 DRF를 추가한다
# settings.py
INSTALLED_APPS = [
...
'rest_framework',
]
urls.py
에 API 경로를 추가한다
# urls.py
urlpatterns = [
...
path('json/', views.article_json),
]
Serializer 기능을 사용하기 위해 추가적으로 model이 있는 app 폴더 안에 serializers.py
파일을 만들어 준다
serializers.py
에 serializer를 추가한다
# serializers.py
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = '__all__'
views.py
에서 serializer를 활용해 API를 제공한다
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import Article
from .serializers import ArticleSerializer
# http method 정의
@api_view(['GET'])
def article_json(request):
articles = Article.objects.all() # 모델 데이터
serializer = ArticleSerializer(articles, many=True) # serializer
return response(serializer.data)