Django ⎜ [DRF_TUTORIAL] Requests and Response
Tutorial 2 : Requests and Response
Request object
request.data는 POST, PUT과 같이 body에 담아 보내지는 data이다.
request.POST # Only handles form data. Only works for 'POST' method.
request.data # Handles arbitrary data. Works for 'POST', 'PUT' and 'PATCH' methods.
Response object
response data는 요청에 대한 응땁하는 값으로 POST, PUT, GET 등에 사용할 수 있다.
return Response(data)
status codes
DRF에서만 제공하는 status codes가 있다.
이 양식을 정확하게 지키지 않으면 에러가 발생되게 된다. (VSC의 자동완성이 빛을 발하는 순간…)
ex)
HTTP_400_BAD_REQUEST
HTTP_200_OK
views.py 작성
(request object, response object, status code 작성)
DRF를 통해 request object, response object를 작성한 간단한 views.py 이다.
데코레이터 @api_view는 기존적인 View 기능을 제공한다.
다음번에 데코레이터 말고 더 많이 사용되는 class를 이용한 APIView라는 것을 사용할 것이다.
주의 사항으론 POST나 PUT과 같이 변경사항이 있을 때는 반드시 serializer를 validation 해줘야 한다.
아래 PUT 부분의 코드처럼 serializer.is_valid() 이 부분이 없으면 error가 발생된다.
@api_view(['GET', 'PUT', 'DELETE'])
def snippet_detail(request, pk):
try:
snippet = Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = SnippetSerializer(snippet)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = SnippetSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
댓글남기기