Atchapedia #2 - MovieDetailView

jinatra·2021년 9월 3일
1

Atchapedia

목록 보기
2/5
post-thumbnail

Atchapedia #2 - MovieDetailView


상세 페이지 담당

왓챠피디아의 메인페이지 또는 검색페이지에서 영화 하나를 눌러보면, 해당 영화의 정보가 보여지는 상세 페이지로 들어가진다.

내가 맡은 두번째 영역은 상세 페이지로 들어갔을 때 보여질 해당 영화들의 정보를 뽑아오는 것이었다.

테스트용으로 영화 40편 가량의 정보를 뽑아서 DB에 넣어논 상태였고, 수가 많은 배우들은 제외하고 우선적으로 상단에 보여질 타이틀, 포스터, 개봉일, 장르, 국가 정보를 뽑아오고자 하였다.


path 파라미터 이용

Resutful API를 위해서는 path 파라미터, query 파라미터 두개를 이용한다고 한다.
path 파라미터를 이용할 땐 어떤 resource를 식별하고자 할 때이고,
query 파라미터를 이용할 땐 정렬이나 필터링을 하고자 하는 상황이라고 한다.

예를 들어, 내가 '세가지 색: 레드' 라는 영화의 정보를 보고자 할 땐 path 파라미터를 이용할 수 있다.
왓챠피디아를 보면 path 파라미터를 사용하였다.

반대로, 영화 '세가지 색: 레드'를 찾기 위해 '세가지색'으로 검색할 때는 query 파라미터를 사용할 수 있다.
아래 왓챠피디아의 예시를 보자.


urls.py 작성

회원가입을 할 때를 생각해보자.
우리는 body에 data를 가지고 와 진행했다. 이와 같은 경우는 하나의 URL 안에서 진행가능하기에 users/signup과 같이 만들었었다.

하지만 영화의 경우엔 갯수가 수백, 수천개일 것이고 이에 대한 경우의 수 하나하나 URL로 지정해줄 순 없을 것이다.

그래서 아예 URL 자체에 어떤 조건을 걸어버릴 수 있다.

movies/1, movies/2 와 같이 메인 url인 movies뒤에 /'movie_id' 형식으로 movieid값을 받아오면 해당 id를 가지고 있는 movie의 정보를 출력하는 형태로 진행하였다.


MovieDetailView

  • GET으로 movie_id가 입력이 되면, 해당 movie_id가 DB에 존재하는지 한번 확인 (filter메소드를 이용하여야 서버가 터지는 것을 방지할 수 있다.)
  • GETmovie_idid를 가진 movie를 DB에서 추출
  • movie_details 딕셔너리에 필요한 정보를 담아서 호출

M2M 관계의 데이터 추출하기 (for loop)

영화와 장르, 국가는 다대다 관계를 가지고 있다. 한 영화는 여러 장르와 국가 정보를 가질 수 있으며, 한 장르와 국가는 여러 영화의 정보를 가질 수 있기 때문이다.

그래서 genre, country 정보를 가져오고 싶을 때 다른 일대일 관계같이 뽑아오면 오류가 생긴다.

그래서 한 영화에 대해 다대다 관계에 있는 genre와 country 데이터들을 뽑은 후, for loop을 통해 하나하나 출력해주어 list에 담아줘야 했다.

(dictionary comprehension 방식을 이용해 간단하게 한줄 안에 담아낼 수 있었다.)


확인

이제 정상적으로 데이터들이 출력이 되는지 POSTMAN을 통해 확인해보자.

정상적으로 나온다!!


More

이제 DB의 이미지 테이블에 포스터를 제외한 이미지를 넣어서 추가로 데이터를 넣어줘야 한다.
(그래야 FE에서 url을 받아 띄워줄 수 있으므로)

영화 한개당 세개만 잡아도 약 90개 가량인데.. 일단 주말동안 해봐야겠다.





Take Away

시작의 어려움

아직 갈 길이 멀다.
지금 보면 정말 간단해 보이는 저 코드 몇줄을 쓰기까지 약 이틀이 걸렸다.
그마저도 나 혼자 힘으로 해낸 것이 아닌, 수없는 구글링과 동기들에게의 질문을 통해 만들어냈다.

사실 저 코드를 제로베이스부터 다시 내 생각을 녹여내어 칠 수 있느냐라고 물었을 때 섣불리 yes라고 대답하기 어려울 것 같다.
주말동안 DB를 채우면서, 하나하나 복기해가며 처음부터 다시 쳐봐야겠다


path/query 파라미터의 구분

상세페이지를 작성하는 중에 Restful API에 대한 session을 들었고, 상세페이지 뷰에의 실질적인 적용 과정에서 두 파라미터에 대해 조금 더 알 수 있었다.

상세 페이지 기능 구현을 통해 path 파라미터에 대해 조금은 알 수 있었던 것 같다. (처음엔 꼬여서 path 파라미터를 쓰고 싶은데 query 파라미터 구현 방식으로 접근하여 몇시간은 헤맸던 것 같다.)

아마 영화 구현이나 sort 기능을 내가 구현하게 된다면 query 파라미터를 이용하여 view를 작성하지 않을까 싶다.

설레면서 두렵다.





참고
https://ryan-han.com/post/translated/pathvariable_queryparam/
https://yuda.dev/250

profile
으악

0개의 댓글