들어가기 전에
영화 API는 안드로이드 앱에서 영화 정보를 요청하고 응답 받아 사용할 수 있도록 웹서버에 만들어 둔 API 입니다.
여러분이 프로젝트를 진행하기 위해서는 영화 목록이나 영화 상세 그리고 영화 이미지 등을 받아 화면에 보여주어야 하는데 이때 영화 API를 사용할 수 있습니다.
영화 API는 JSON으로 응답을 보내줍니다.
따라서 Volley를 이용해 요청하고 Gson을 이용해 응답을 자바 객체로 바꾼 후 화면에 표시하면 됩니다.
그러면 먼저 영화 API가 어떻게 구성되어 있는지 살펴봅시다.
학습 목표
- 영화 API가 어떻게 구성되어 있는지 이해해봅시다.
- 영화 목록을 요청하고 응답을 받아 처리하는 과정을 설명해봅시다.
핵심 단어
학습하기
영화API
영화진흥위원회의 오픈 API에는 영화포스터와 같은 이미지를 다운로드할 수 있는 정보가 없습니다.
이 때문에 이 API를 사용하는 것이 제한적일 수밖에 없습니다.
여러분이 프로젝트를 진행하기 위해서는 미리 만들어둔 웹서버의 영화 목록, 영화 상세, 영화 이미지 등을 제공하는 API를 사용하여야 합니다.
시간이 된다면 여러분이 직접 영화 API 서버를 만들어볼 수도 있습니다.
참고로 이번 코스에서는 서버 쪽의 코드를 직접 만들지는 않기 때문에 미리 만들어둔 서버의 API를 제공하는 것입니다.
영화 API를 요청할 때의 웹서버 주소와 포트 정보는 다음과 같습니다.
- 서버 주소 : boostcourse-appapi.connect.or.kr
- 포트 번호 : 10000
영화 목록 요청하기
영화 목록을 요청하기 위한 요청 패스는 다음과 같습니다.
영화 목록을 요청하는 샘플 주소는 다음과 같습니다.
응답은 JSON 문자열이며 응답 코드와 응답 메시지를 포함하고 있습니다.
result 속성의 값은 배열로 되어 있고 배열 안에는 영화 정보가 각각의 객체로 들어가 있습니다.
영화 상세 요청하기
영화 목록에는 각각의 영화에 대한 id 값이 들어가 있습니다.
이 id 값을 이용하면 좀더 상세한 영화 정보를 요청할 수 있습니다.
영화 상세를 요청하기 위한 요청 패스는 다음과 같습니다.
id라는 요청 파라미터에 영화 id 값을 지정할 수 있습니다.
다음은 샘플 URL입니다.
응답으로 받은 데이터를 보면 영화 객체에 훨씬 많은 속성이 들어 있습니다.
한줄평 목록과 한줄평 저장
한줄평 목록을 조회하거나 한줄평을 저장할 수 있습니다.
한줄평 목록을 조회할 때는 다음과 같은 요청 패스를 사용합니다.
한줄평을 저장하거나 기타 다른 기능을 사용하고 싶다면 영화 API 문서를 참조하기 바랍니다.
이미지 다운로드
영화 목록이나 영화 상세 데이터에 포함되어 있는 이미지 주소는 이미지를 다운로드 받을 때 사용됩니다.
예를 들어 웹브라우저에 이미지의 주소를 입력하면 영화 포스터 사진을 볼 수 있습니다.
그러면 이 이미지 주소를 이용해 앱에서 다운로드한 후 화면에 있는 이미지뷰에 보여줄 수 있겠죠?
생각해보기
- 영화 목록 요청에 대한 응답으로 받은 문자열에는 영화에 대한 정보가 몇 개나 들어있나요?
- 영화 상세 요청으로 받은 응답의 속성들과 앱의 화면에 추가했던 각각의 뷰를 매칭해볼 수 있을까요?
comment
https://www.getpostman.com/collections/af558f5dc6633445f5e2
영화 API postman으로 collection 만들어놨는데 필요하신 분들은 사용하세요~
다른 url접근은(영화 진흥 위원회) 되는데 해당 페이지에서 데이터를 수신할때
javax.net.ssl.SSLHandshakeException: Handshake failed
이런 오류가 나는데 이런건 어떻게 해결해야하나요 ?
강좌에서 보여주시는 API 요청/응답 엑셀 파일은 PDF 형태로 projectE 자료로 올라와 있으니 필요하신 분은 미리 참고하시면 좋을 것 같습니다.
좋아요 api가 계속 안 되는데 정상적으로 되시는 분 계신가요??
포스트맨 사용했는데도 에러코드400이 뜨네요.
파라미터 "Y", "N" or "Y", null 이런식으로 넘겼어요
비밀 번호를 묻는데요?
영화가 5개 있다면 프래그먼트를 모두 5개를 별도로 만들어야 하나요?
영화API 서버에 영화가 정확히 몇개 있는지 모를떄는 어떻게 하나요?
생각해보기
1. 12가지가 들어가 있는 것 같습니다.
2. 네. Json 객체로 저장 후 해당 객체에서 원하는 값들을 알맞은 뷰에 보이도록 설정하면 될 것 같습니다.
질문이 있습니다.
이미지의 경우 너무 사이즈가 커서 링크로 전달한다고 말씀하셨는데, 그렇다면 이미지는 항상 저장하고 불러올때 링크 형식으로 하여야 하는건지 궁금하여 잠깐 검색을 해보았습니다. 이미지를 bitmap 형식으로 전환 후 bitmap을 스트링으로 인코딩하여 저장 및 전달을 할 수 있다고 나와있던데, 왜 영화API에선 이를 링크로 주고받도록 하였는지 궁금합니다. bitmap string 보다 이미지링크로 정보를 전달함으로써 편리한 점이 있나요?? 혹은 bitmap string의 단점이 있는건가요?