Closed f-lab-stephen closed 1 year ago
serializer
고민점
위 사항은 ModelSerializer를 사용해서 좀 더 concise하게 만들 수 있기에 이를 채택하기로 결정했습니다.
@sanghunjo921 좋은 흐름입니다! 결국 ModelSerializer
를 사용하기를 기대하고 있었습니다 ㅎㅎ
(참고용) https://github.com/google/gson 이거는 자바쪽에서 쓰는 serializer인데요. Django REST Framework에서는 built-in으로 제공하는 게 참 다행인 것 같습니다. 스프링에서 serializer 붙이다가 생각나서 보여드립니다! gson은 전혀 공부하실 필요 없습니다.
저거 보니까 머리가 아파오네요. 장고로 진행중이라 다행이에요!
일단 챕터1 다 완료후 localhost:8000/properties 테스트 결과 올려봅니다. 현재 데이터가 없어서 별게 안뜨긴 하는데 해당 url이 동작하는거 같습니다.
postman 설치 후 create 후 get 요청을 재테스트 해봐야겠습니다.
delete 테스트 결과 status code 301 리다이렉트가 일어나네요. "DELETE /properties/1 HTTP/1.1" 301 0
터미널상으로 확인해보니 DELETE를 하면 get 요청이 리다이렉트되는 버그가 있네요. 일단 관련 다큐먼트들을 봐야겠습니다.
튜토리올을 따라 작성해서 발생한 문제같긴 한데 튜토리올에서는 단순히 get만 테스트 해서 elif request.method == 'DELETE': property.delete() return HttpResponse(status=204) 이런식으로 delete 처리를 하는데 제 생각에는 property.delete() 안에 pk 정의를 하지 않아서 발생한 문제 같습니다.
delete 부분을 바꿔보고 다른식으로 구현해봤지만 역시나 똑같은 에러가 발생하네요 !!! https://d-yong.tistory.com/61
챕터3을 보면서 view를 제대로 쓰고나서 다시 테스트 해봐야겠습니다. 현재 구현된 CRUD자체가 완성되있지 않기에 일단 완성부터 시켜볼게요!
tutorial3 따라서 클래스 베이스로 전환했는데 delete 요청시 같은 에러가 발생하네요 흠...
바보같은 실수를 했네요. delete http://127.0.0.1:8000/properties/2/ 위와 같이 아이디 뒤에 /를 입력해야 아이디가 들어간 요청이 처리됩니다. 특정 매물 정보를 get할때는 저런식으로 하고 delete를 이상하게 테스트해서 요청이 제대로 끝나지 않아서 리다이렉트가 발생했네요
generic view 만들어서 포스트맨으로 테스트 결과 기대했던데로 나오네요. 엄청 줄줄줄 코드 작성하다가 generic 사용해서 코드가 엄청 간결해지니까 이걸 쓰는 이유가 더 와닿네요 ㅎㅎ
일단 이슈6에 대한 부분 푸쉬 했습니다.
목표
REST API Spec에서 아래 엔드포인트에 해당하는 API를 구현합니다.
제약 조건
ViewSet
을 사용하지 않습니다.태스크
Property
모델에 대한 serializer를 정의합니다.Property
모델을 serialize/deserialize할 수 있을지 고민해 보세요./properties/
를 구현하는 APIView 또는 GenericAPIView (GET과 POST를 사용하는 경우에는 generic view의 종류 중ListCreateAPIView
가 적절하다. generic view 문서 참조)/properties/{propertyID}/
를 구현하는 APIView 또는 GenericView (generic view 중 어떤 뷰가 적절한지 문서에서 찾을 수 있음.)통과 조건 (Acceptance Creteria; AC)