seminar-2020 icon indicating copy to clipboard operation
seminar-2020 copied to clipboard

static을 만들지 않고 json으로 post할 때 오류

Open pasa3232 opened this issue 3 years ago • 2 comments

코딩모임에서 다뤘던 내용입니다.

스크린샷, 2020-11-14 17-12-54

3번까지 진행 된 상황에서 위와 같이 json으로 user post를 할 수 있는 프론트를 확인할 수 있는데, 잘 작동이 되지 않는 상황을 겪었습니다. json으로 post를 보내고 request.data를 찍어보면 아래와 같습니다.

스크린샷, 2020-11-14 17-17-11

Content에 적어준 내용들이 하나의 string으로 묶여서 "content"라는 attribute로 보내진다는 것을 확인할 수 있었습니다. "role"과 같은 attribute는 존재하지 않고 "content"와 "content-type" attribute만 존재하는 json response를 보내줍니다.

프론트적으로 static이 존재하지 않으면 response body가 잘 보내지지 않는 문제가 있는 것 같습니다. 뒤의 과제를 수행하면서 자연스럽게 해결되는 것이기 때문에 그냥 postman으로 post해보고 넘어가면 될 것 같습니다.

pasa3232 avatar Nov 14 '20 08:11 pasa3232

@pasa3232 빠른 공유 정말 감사합니다! 저랑 @Hank-Choi , @dkwanm1 도 같이 보면서 한참 헤맸었는데, 이런 경우를 과거에 직접 테스트해보며 경험한 적이 없었기 때문입니다. static 하게 제공되는 것으로 HTML, CSS, JavaScript 파일들이 있는데 그 중에 (아마 JavaScript에) DRF 프론트의 Raw data 탭으로 보낼 때 적절한 JSON 형태로 잘 만들어주는 프론트엔드 로직이 포함되어있는 것 같습니다. 그래서 local 환경에서 runserver 해봤을 때 또는 static 파일들도 모두 배포되게 했을 때는 문제가 발생하지 않으나, uWSGI를 통한 동적 배포만 한 상황에서는 바라는 JSON 형태대로 DRF 프론트의 Raw data 탭을 통해서는 request body가 잘 전달되지 않는 것 같습니다. 물론 이것은 DRF가 자동으로 만들어주는 프론트에 관련한 이야기들이고, #256 에서도 언급했듯, DRF 웹 프론트 자체는 중요한 것이 아니라 cURL, Postman 등 배포된 서버에 요청을 보내는 것 자체가 중요합니다! 아무튼 이를 통해 DRF 프론트가 필요로 하는 static 파일들이 비단 '예쁘게만 해주는' 것이 아니라, 기능적인 프론트엔드 로직 요소도 포함하고 있다는 것을 알 수 있었네요.

davin111 avatar Nov 14 '20 08:11 davin111

https://github.com/wafflestudio/rookies/commit/e18613b5abed7da90a125a33550f191bb2f5a2c6 과제 내용에도 이 상황을 고려하여 좀 더 친절하게 사족을 붙여보았습니다.

davin111 avatar Nov 14 '20 08:11 davin111