[drf | uuid] Build a Backend REST API - 46

Hyeseong·2021년 3월 8일
0
post-custom-banner

Add feature to upload image🚗

serializer🚓

/recipe/serializers.py 경로에 파일을 추가 수정 및 작성해보도록 할게요.

views🚕

action, Response, status 각각을 임포트 하도록 할게요.

from rest_framewrok.decorators import action
from rest_framework.response import Response
from rest_framework import viewsets, mixins, status

아래 @action는 기본적으로 GET METHOD의 특징을 가지고 있는데요.
이외의 HTTP METHOD 기능을 구현한다면 PATCH, DELETE, PUT을 넣어 명시해주면되요.

POST요청에 대한 get_serializer_class 메소드에 대한 변경도 있어야해요. 현재는 GET요청에 대한 부분만 명시되어 있어요.

get_serializer_class 🛺

메서드 내에서 추가 분기를 위해서 elif문을 작성할게요.
그래서 self.action의 값이 'upload_image'일 경우 RecipeImageSerializer를 반환 하도록 합니다.

테스트 돌려 보기 🚙

성공!

Browsable API🚌

recipe 등록시 반환되는 body의 json이에요.

recipe의 id를 url에 입력하여 단건으로 조회한 결과에요.
ingredients, tags 키의 id와 name이 모두 출력된게 확인되네요.

upload-image를 http url경로의 마지막에 붙여서 조회하면 아래와 같이 나와요.
image 필드만 있조? id필드가 read_only로 설정해 줬기 때문이조.
이미지 파일을 선택해서 업로드 하여 제출 하도록 할게요.

이미지 파일을 로컬에서 선택해서 업로드 하게 되면 아래 이미지가 리스폰스로 나오게 되요. image link가 잡혀있는데 16진수가 길게 잡혀있는 파일 이름이 보이나요.

profile
어제보다 오늘 그리고 오늘 보다 내일...
post-custom-banner

0개의 댓글