Titanium + Alloy + napp.alloy.adapter.restapi로 만드는 쉬운 Qiita 뷰어 앱 응용편 (페이지 네이션 기능 구현)

7624 단어 Titanium
Titanium Advent Calendar 2014 의 3일째입니다.

TitaniumMobile 공부기 라고 하는 블로그에서 매년 Titanium Advent Calendar 쓰고 있습니다만 이번은 Qiita에게 Titanium Advent Calendar 할 수 있었던 것과 최근의 흐름으로 Titanium 관련 재료가 Qiita에 집약되어 ​​오고 있으므로 올해는 이쪽으로 쓰기로 하겠습니다

전치



올해의 6월에 프리랜서가 되어, 일로 조금 Titanium에서 개발도 할 수 있게 되었고, 그 근처의 일이라도··라고 생각했습니다만, 그것은 자신의 블로그에 쓰기로 하고, 일단 기술 자료를 작성합니다.

재료로서는 Titanium + Alloy + napp.alloy.adapter.restapi로 만드는 쉬운 Qiita 뷰어 앱의 속편입니다

하고 싶은 일



전회는 단순히 Qiita의 API에 액세스해 취득했을 뿐이었습니다만

처럼 두 번째 페이지의 게시 정보를 얻는 기능이 구현되지 않았기 때문에 거기에 대해 설명합니다.

결론만 알고 싶은 사람



먼저 쓰면, 호출하는 측의 Controller에서 urlparams라는 옵션 항목을 붙여

qiitaItems = Alloy.createCollection 'qiita'
qiitaItems.fetch
  urlparams:
    page     : 2
  success: () ->
    # 成功時の処理を書く

  error: () ->
    # 失敗時の処理を書く


이렇게하면 괜찮습니다.

위의 urlparams에 대한 설명



여기에서 해설이라고 하는지, 이 파라미터를 어떻게 찾았는지 순서에 접해 갑니다

원래 이야기이지만 페이지 네이션에 대한 구현 방법에 대해 해설이 없다 ...



GitHub의 napp.alloy.adapter.restapi 님의 README를 보는 한 매개 변수를 전달하는 방법에 대한 설명이 없습니다. .

여러가지 칸으로 하고 있었습니다만, 꽤 해결 방법을 모르기 때문에, 솔직하게 소스 코드를 읽기로 했습니다

관련이 있는 코드



전부를 확실히 읽지 않았습니다만 이하의 근처가 관련되는 것일까라고 생각했습니다.

140행째당의 methodMap 곳에서, HTTP Method와의 대응 처리 같은 것을 하고 있는 것 같았습니다. 일단 지금은 GET 메소드의 쿼리를 어떻게 전달하는지 알고 싶기 때문에, GET에 대응하는 read라는 곳에 주목
// 140行目あたり
    // REST - CRUD
    var methodMap = {
        'create' : 'POST',
        'read' : 'GET',
        'update' : 'PUT',
        'delete' : 'DELETE'
    };

230번째 줄에 이런 처리가 있었고 case 'read'가 관련되어있는 것처럼 여기를로드하기로 결정했습니다.

    switch(method) {
        case 'create' :
        // 中略 
        case 'read':


240행에서
            if (params.urlparams) {
                // build url with parameters
                params.url = encodeData(params.urlparams, params.url);
            }

라는 처리가 있습니다.

코멘트에 build url with parameters라고 하는 것이 쓰여져 있고, urlparams라고 하는 옵션을 건네주면, 좋은 느낌에 파라미터를 인도해 줄 것 같은 예감이 했습니다.

거기서 호출하는 측의 Controller로부터

qiitaItems = Alloy.createCollection 'qiita'
qiitaItems.fetch
  urlparams:
    page     : 2
  success: () ->
    # 成功時の処理を書く

  error: () ->
    # 失敗時の処理を書く


와 같이 해주는 것으로 의도한 대로 2페이지째의 투고 정보를 취득해 줍니다.

또한 urlparams에 page라는 매개 변수를 전달할뿐만 아니라

qiitaItems = Alloy.createCollection 'qiita'
qiitaItems.fetch
  urlparams:
    page     : 2
    per_page : 5
  success: () ->
    # 成功時の処理を書く

  error: () ->
    # 失敗時の処理を書く


와 같이 해주는 것으로, 1 페이지당의 취득 건수를 5 건으로 조리개 2 페이지째의 투고 정보를 취득해 줍니다. Qiita의 WebAPI 사양에서 기본 취득 건수는 20건입니다. 자세한 내용은 Qiita 개발자를 위한 문서 사이트을 참조하십시오.



요약



napp.alloy.adapter.restapi는 편리하지만 페이지 네이션을 어떻게 실현하는지 문서에 언급하지 않았습니다. 단지 소스 코드 읽으면 의외로 간단하게 사용법을 알았습니다.

네이티브 모듈의 소스 코드를 읽는 것은 조금 문턱이 많을지도 모릅니다만, JavaScript로 쓰여진 라이브러리라면 Titanium에서의 개발의 연장선상에서 어떻게든 이해할 수 있는 케이스가 있을까라고 생각해 이번 그 근처의 접근 방법에 대해서도 소개해 보았습니다.

내일은, 유저회 회장의 yagi_씨 가 PubNub 를 사용해 실시간 메시징(간단)에 대해 쓰는 것 같아서, 기대군요!

좋은 웹페이지 즐겨찾기