2021. 10. 18. 15:16ㆍiOS/iOS
이 포스팅은 꼼꼼한 재은씨의 Swift 기본편 - chapter09 네트워크 통신과 API편을 참고하였습니다.
안녕하세요 bannavi입니다^ㅅ^
오늘은 Open API와 공공콘텐츠에 대해 배워볼거에요
앱에서 유용하게 사용할 수 있을만큼 콘텐츠를 공공재 성격으로 제공하는 곳들이 있습니다.
이를 활용하면 콘텐츠를 직접 생산하는 수고 없이도 충분히 좋은 앱을 만들 수 있습니다.
Open API
일부 웹 사이트에서는 공개된 SOAP프로토콜, Restful형식을 사용하여 공공콘텐츠를 제공하는데 이를 Open API라고 합니다.
http://www.data.go.kr
http://data.seoul.go.kr
http://developer.naver.com
예)
1. 지역별 운행 시내버스 정보
2. 지역별 축제나 문화 관광지 안내 정보
3. 실시간 약국정보 등.....
오픈 API와 인증
오픈API 표준의 주도권을 잡으려는 경쟁 또한 한동안 매우 치열했었습니다.
일명
"SOAP&XML포맷 주장파" VS "REST&JSON포맷 주장파"
최근에는 오른쪽이 더 우세하다고 합니다.
오픈 API서비스는 무분별한 사용을 막기위해 인증과정을 거치도록 설계되어 있습니다.
대표적인 예가 OAuth
오픈 API를 이용한 네트워크 실습
1단계 원하는 정보를 제공하는 웹 서비스와 사용할 API 검색
2단계 오픈 API 사용을 위한 신청과 인증 키 발급
3단계 앱 내에서 네트워크를 통해 데이터를 받아오도록 코드 구현
4단계 전달받은 데이터를 파싱하여 사용
Request URI
요 URI주소는 알고보면...
요렇게 구성되있다는 사실!
http://swiftapi.rubypaper.co.kr:2029/hoppin/movies?version={API버전}&page={불러올페이지}&count={불러올개수}&genreId={장르구분}&order={정렬조건}
영화 정보 제공 서비스 기준 Request URI는 영화 차트 API를 호출하기 위한 네트워크상의 주소입니다.
웹 사이트에서 특정 페이지를 불러올 때 사용하는 URL과 비슷한 의미라고 생각하면 돼용
다만 이 URL을 그대로 사용하는 것이 아니라 {정렬조건}, {불러올페이지}, {불러올개수} 등 중괄호로 둘러싸인 부분을 적절한 값으로 치환한 다음에 호출해야합니다.
Querystring Parameters
Request URI에서 값으로 대체해야 할 부분의 정보
항목 | 데이터 타입 | 값 예시 | 설명 |
version | 정수형 | 1 | API의 버전 정보 |
page | 정수형 | 1 | 조회할 목록의 페이지를 지정합니다 - page 값이 0, 1일 경우 모두 1로 지정됩니다. |
count | 정수형 | 10 | 페이지당 출력할 영화 정보 건수를 지정합니다 |
genreid | 정수형 | 0 | 장르 ID입니다. 현재 지원되지 않으므로 값을 비워둡니다 |
order | 문자열 | releasedateasc | 정렬방식을 지정합니다 - releasedateasc: 개봉일 오래된 순 - releasedatedesc: 개봉일 최근 순 |
실제로 가져올 데이터는 전체 데이터 중 일부입니다.
표시된 전체 데이터 개수와 우리에게 전달된 데이터의 개수는 일치하지 않을 수도 있습니다.
뭔말이야! 음. 쉬운 예를 한번 들어볼까요?
제가 전국에 있는 약국 정보가 담긴 1000페이지 분량의 API를 가지고 있다고 칩니다.
우리한텐(개발자) 사용할 수 있는 1000페이지의 정보가 있는거에요.
근데 사용자(앱 유저)에게 표시되는 데이터는 1페이지일수도 있다는거에요.
"엥.. 1000페이지의 양질의 정보가 있는데 왜 데이터를 일부만 가져와...?"
하실수도 있는데, 수천 수만개의 데이터를 한번에 가져오기보다 당장 화면에 출력해야할 데이터만 전송해주고
나머지는 [더보기]버튼을 통해 다시 요청하는 방식으로 처리하는 것이 일반적입니다.
이를 페이징(Paging)처리라고 합니다.
마치 카카오톡 친구목록같이 말이에요!
제 친구가 1000명이라고 해서
한 화면에 친구1000명을 전체 다 보여줄 수 없잖아요? 보통 10명정도를 보여주고
아래로 스크롤할때마다 마치 [더보기]버튼을 누른것처럼 또다른 10명을 보여주고 보여주고......이렇게 되는거죠.
좀 이해가 되시죵? 후후
이처럼 데이터에 대한 페이징 처리를 하려면 총 데이터 개수가 몇개인지 알아야하므로(예) 2번째장/1000번째장 중)
이를 지원하기 위해 총 데이터 개수값을 제공하는것입니다.
아직 완벽하게 알지 못해도 괜찮아요! 첫술에 배부를 수없죠
저랑 같이 반복해서 보고, 코드도 고쳐보고 하면서 json파싱 껌이었네!를 느껴보도록 합시다
오늘도 고생하셨습니당^ㅅ^
'iOS > iOS' 카테고리의 다른 글
앱을 testflight버전으로 배포해서 테스트 요청하기(feat. 참교육) (2) | 2021.10.22 |
---|---|
iOS 네트워크 통신과 API 살펴보기 5(재사용 메커니즘, 비동기 처리하기) (0) | 2021.10.21 |
iOS 네트워크 통신과 API 살펴보기 4(thumbnail처리, 더보기 기능 구현 ) (0) | 2021.10.19 |
iOS 네트워크 통신과 API 살펴보기 3(Json Parsing) (0) | 2021.10.18 |
iOS 네트워크 통신과 API 살펴보기 1(SOAP, Restful, XML, JSON) (0) | 2021.10.17 |