인프런 커뮤니티 질문&답변

rhrjs1218님의 프로필 이미지
rhrjs1218

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

POST vs GET

해결된 질문

작성

·

162

0

안녕하세요 API를 만들던 중 의문점이 생겨서 질문드립니다!

POST -> 해당 URL을 요청하면 리소스를 생성한다.

GET -> 해당 URL의 리소스를 조회한다.

라고 이해를 했습니다.

 

제가 만든 API는 GET 요청 한 번으로 키워드 생성 후 보여주는 것까지 가능하게 만들었습니다.

키워드 생성하는 API와 키워드 조회 API를 따로 만들어야 될까요?

 

제가 생각하는 것은 생성 후 조회까지 가능하게 만들면 GET 호출 한 번만 하면 돼서 이렇게 만들어봤습니다.

현재 프론트에서는 이런 흐름으로 진행되고 있습니다.

  1. 파일을 입력한다 -> POST (파일 생성 API)

  2. 다음 버튼을 누른다. -> 다음 페이지로 넘어간다.

  3. 키워드를 보여준다. -> GET(키워드 생성 후 조회해서 보여주기)

스크린샷 2022-11-23 오후 7.44.53.png

 

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

Web API에서는 일반적으로 조회목적으로 GET 방식을 사용하며, 서버의 상태를 변경하지 않는 안전한 메소드로서 인정을 받습니다. 그에 반해 POST는 생성 목적으로 주로 사용을 하구요.

DRF 뷰셋 구현에서는 POST요청을 통해 생성 후에 응답으로서 생성한 리소스에 대한 내역을 응답으로 돌려주고 있습니다.

GET 방식에서도 생성을 하실 수도 있지만, 일반적으로 사용하지 않는 접근입니다.

구현하신 keyword action은 인자없는 GET 요청인데, FileModel의 최근 instance를 가져와서 키워드 목록을 뽑고, 이를 KeywordModel에 저장하고 저장된 KeywordModel 목록을 응답하고 계시네요.

FileModel의 keyword 리스트를 뽑아내는 것은 API에서 구현하실 것이 아니라, FileModel 모델이 저장될 때마다 keyword list를 뽑도록 구현하시는 접근이 맞지 않을까 싶구요. // keyword action에서는 단지 조회만 하는 것이 어떠실까 싶습니다.

FileModel 모델의 save 이후에 원하는 함수를 실행시키기 위해, post_save 시그널을 활용하시거나 save 메서드를 재정의해보실 수 있습니다.

화이팅입니다. :-)

rhrjs1218님의 프로필 이미지
rhrjs1218
질문자

늦은 시간에 답변 감사합니다!

rhrjs1218님의 프로필 이미지
rhrjs1218

작성한 질문수

질문하기