티스토리 뷰
REST
Representational State Transfer
- API Server를 개발하기 위한 소프트웨서 설계 방법론으로 REST 원리르 따르는 시스템을 RESTful 이라고 한다.
- 정보(URI)와 행위(HTTP Method)를 통해 요청을 보내고, 응답은 JSON으로 표현된 데이터이다.
JSON(Javascript Object Notation) 자바스크립트 객체 표기법
- 가벼운 데이터 교환 포맷으로 Javascript의 표기법을 따른 단순한 문자열.
Restful API
- REST 원리를 따라 설계한 API
- 프로그래밍을 통해 클라이언트의 요청에 JSON을 응답하는 서버를 구성한다.
Response
JsonResponse 오브젝트를 통해 Json 응답을 만든다.
Serialization
- 데이터 구조나 객체를 저장하고 재구성할 수 있는 포맷으로 변환하는 과정
Serializers in Django
- 쿼리셋, 모델 인스턴스 등 복잡한 데이터를 JSON, XML 유형으로 쉽게 변환할 수 있는 Python 데이터 타입으로 만들어준다.
django 내장 HTTPResponse를 활용한 JSON 응답
# django 내장 HTTPResponse를 활용한 JSON 응답
# articles/views.py
from django.http.response import JsonResponse, HttpResponse
from django.core import serializers
def article_json(request):
articles = Article.objects.all()
data = serializers.serialize('json', articles)
return HttpResponse(data, content_type='application/json')
django REST framework(DRF) 라이브러리를 사용한 JSON 응답
# django REST framework(DRF) 라이브러리를 사용한 JSON 응답
# articles/serializers.py
# ModelSerializer는 Article 모델에 맞추어 자동으로 필드를 생성하고 serialize 해준다.
from rest_framework import serializers
from . import Article
class ArticleSerializer(serializers.Modelserializer):
class Meta:
model = Article
fields = '__all__'
# DRF의 Response()를 활용해 Serialize된 JSON 객체 응답
# articles/views.py
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import ArticleSerializer
@api_view()
def article_json(request):
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True) # 쿼리셋은 many=True 필수
return Response(serializer.data) # json 응답
# serialized 된 파일을 parsing
import requests
from pprint import pprint
response = requests.get('http://127.0.0.1:8000/api/v1/json/')
data = response.json() # list 타입으로 전송
pprint(data[0]) # 하나의 딕셔너리 객체 출력
Django REST Framework(DRF)
- Web API 구축을 위한 라이브러리
Build RESTful API
# urls.py
urlpatterns = [
path('articles/', views.article_list),
path('articles/<int:article_pk>', views.article_detail),
]
두 개의 url로 5개의 API를 만들 수 있다.
1. articles/ 전체 글을 조회하고(GET) 새 글을 작성(POST) 할 수 있다.
2. articles/1/ 게시글을 조회하고(GET) 수정하고(PUT) 삭제(DELETE)할 수 있다.
'Django Framework' 카테고리의 다른 글
Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>` (0) | 2021.11.23 |
---|---|
Django Movie 프로젝트 관련 QuerySet API (0) | 2021.11.19 |
HTTP & API (0) | 2021.11.15 |
Django REST API 및 HTTP Method (0) | 2021.10.26 |
Movies 영화 커뮤니티 사이트 구현 (0) | 2021.09.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 임대차3법
- 개발자
- ssafy합격후기
- intj여자
- 폰트
- 클린코드
- 개발언어추천
- 디즈니얼굴
- 맥과윈도우로깃허브
- 개발도서추천
- SSAFY
- 한글무료폰트추천
- ssafy결과
- ssafy6기
- 개발언어순위
- 깃허브계정2개
- 싸피6기
- 개발자커리
- 폰트추천
- 깃허브계정
- 개발자책추천
- 코딩도서
- 개발자도서추천
- 싸피
- 브왈라
- 무료폰트추천
- 개발자로드맵
- 클린코더
- ssafy후기
- 상업용무료폰트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함