(Swift)iOS Apps with REST APIs(一)

6489 ワード

重要な説明:これは一連のチュートリアルで、本人のオリジナルではなく、海外のチュートリアルを翻訳します.私もSwiftを勉強しています.このチュートリアルを見ると、実際のアプリを開発するのにとても役立ちます.だから、翻訳して共有します.元のチュートリアルはとても長くて、私は続々と翻訳して発表して、交流と分かち合うことを歓迎します.また、元のチュートリアルには第1章があり、このチュートリアルと関連する基礎概念を述べており、翻訳する必要はないと感じているので、ここで省略します.興味のある人は自分でインターネットを利用して原版のチュートリアルを探すことができます.

App要件


直接符号化することは私たちにとっていつも誘惑的ですが、事前に何をするかを明らかにし、計画を立てておけば、符号化をよりスムーズにすることができますか.あるいは、少なくとも作成する必要があるアプリケーション(App)について考えなければなりません.Ok、gist sというアプリケーション(App)のニーズをリストします.構築するアプリケーションに基づいて変更することができます.
まず、アプリケーションにそれらのインタフェースがあることを列挙します.もちろん、私たちはこのことを完成する方法がたくさんありますが、私はまずユーザーがこのアプリケーションを通じてそれらを完成したいことをリストしてから、インタフェースの設計を行うのが簡単です.
では、私たちのユーザーはgistsを使って何をしますか?Gistsはいくつかのコードの断片であり、GitHubを通じて他のユーザーに共有することができる.したがって、gistsを使用するには、次の機能が必要になります.
  • 公共のgistsライブラリのリストを見て、どんな新鮮なものがあるかを見てみましょう.
  • クエリー興味のあるgistsライブラリは、通常、プログラミング言語によってクエリーされます.
  • コレクション/gistsライブラリに注目し、後で表示できます.
  • 自分がコレクション/関心を持っているgistsライブラリのリストを表示します.
  • 自分のgistsライブラリを見て、よく使われるコードを保存して、後で毎回もう一度叩く必要はありません.
  • 公共、自己またはコレクションのgistsライブラリの詳細を表示します.
  • 新しいgistsライブラリを作成します.
  • 自分のgistsライブラリを削除します.

  • あなたのアプリケーションのタスクまたはユーザーストーリをリストします.gistsAppと比較して、コレクション、ユーザー、gistsライブラリなどの異なるオブジェクトやアクション(リストの表示、オブジェクトの詳細の表示、追加、削除など)に注目します.
    リストが長いかもしれませんが、この場合は、第1版で実装する必要があるかどうかを考慮する必要があります.そうでなければ、次のバージョンで実装できる機能を分離する必要があります.
    リストの各機能を評価し、第1版で実現する必要がある機能を判断します.今はもう第2版を設計したいかもしれません.しかし、実行可能なアプリケーションは、無期限の遅延パブリケーションの完璧なアプリケーションよりもはるかに優れています.

    マッチング機能とAPIエンドポイント(endpoint)


    次に、機能リストの各項目について、APIインタフェースを使用して表示するデータを取得する方法を見つけます.Github GISTs APIドキュメントを確認し、各機能に対応するAPIエンドポイント(endpoint)を見つけます.認証やページングなど、特定の処理が必要なAPIエンドポイントも表示されます.

    共通gistsライブラリリスト

      GET /gists/public
    

    認証は必要ありません.20個以降を表示する場合は、ページングを使用してより多くのデータをロードする必要があります.

    Gistsライブラリのクエリー


    Githubはこのためにインタフェースを提供していません.私たちのアプリケーションはクエリー機能がなければとてもいいので、まずこの機能をしません.

    コレクション/コレクションのキャンセルGistsライブラリ

      PUT /gists/:id/star
      DELETE /gists/:id/star    
    

    認証が必要です.

    コレクションリスト

      GET /gists/starred
    

    認証が必要です.

    私のGistsリスト


    ユーザーのgistsリストを取得するには、次の2つの方法があります.
      GET /users/:username/gists  
    

    検証済みの場合は、次の操作を行います.
      GET /gists
    

    Gistの詳細を表示


    gistsの詳細データをリストビューで詳細ページに渡すことができます.そうでない場合は、以下のように取得できます.
      GET /gists/:id
    

    gistsがコレクションされているかどうかを判断するには、次のようにします.
      GET /gists/:id/star
    

    Gistsの作成

      POST /gists
    

    ユーザー独自のGistsライブラリを作成するには、まず認証が必要です.そうしないと、作成したライブラリの作成者は匿名になります.作成時に提出されたJSONデータ構造は以下の通りである.
    {
      "description": "gist    ",
      "public": true,
      "files": {
        "file1.text": {
          "content": "    ,    "
        }
      }
    }
    

    Gistsの削除

      DELETE /gists/:id
    

    認証が必要です.
    以上が必要なすべてのエンドポイントです.クエリに関連するAPIが提供されていなくても、これらのAPIを使用してこの例示的なアプリケーションを記述するには十分である.
    各機能を分析し、対応するAPIエンドポイント(endpoint)またはiOS機能をリストする必要があります.これらのAPIが有効であることを確認し、そうでなければ、自分のチームが維持している場合は、これらのAPIを実現するのに十分な時間を残すために、急いで申請します.

    ユーザーインタフェース


    次に、ユーザーが使用できるようにアプリケーションを設計します.各タスクを分析し、対応する使用方法を示します.次はインタフェースの使用に従って機能を並べ替えます.

    認証プロセス


    ユーザーが操作する機能が認証されてから使用できるようになると、まずユーザー認証チェックを行い、合格しなければログインプロセスを開始してユーザーをログインさせます.
    アプリケーションにログインしていない前にユーザーが使用できる機能がたくさんある場合は、ユーザーのログインを遅らせたいかもしれません.したがって、ログイン後に呼び出すインタフェースについては、呼び出す前にユーザーがログインしたかどうかを確認する必要があります.

    パブリックGistsリスト


    トップページはパブリックGistのリスト(表ビューtable viewを使用)である.

    私のコレクション


    パブリックリストから、ユーザーは私のコレクションのリストに切り替えることができます.

    私のGists


    パブリックリストやコレクションのユーザーから私のGistsに切り替えることができます.上の3つのリストは似ていますが、セレクタ付きのテーブルビューを使用できるかどうか、ユーザーが選択することで3つのビューを切り替えることができます.

    Gistsの詳細を表示


    ユーザーがリストのいずれかのGistsをクリックすると、別の異なるビューに変換されます.このビューには、Gistsの情報(説明およびファイル名)と、ユーザーにファイルの内容を表示させることができる情報が詳細にリストされます.また、インタフェースにはGistsがすでにコレクションされているかどうかも表示されます.

    コレクション/コレクションのキャンセルGists


    詳細ページでは、コレクションのステータスを表示し、クリックしてコレクションを行うか、コレクションをキャンセルすることができます.

    新規Gists


    私のGistsリストビューの右上隅に+ボタンがあります.このボタンをクリックすると、ユーザーは新しいGistsを作成するために使用できる入力フォームが表示されます.フォームに入力する必要がある情報は次のとおりです.
  • 説明:テキスト;
  • 公開されているかどうか:ブール値;
  • ファイル名:テキスト;
  • ファイル内容:テキスト.簡単さを保つために、バージョン1.0ではGistsで1つのファイルしか作成できません.

  • Gistsの削除


    私のGistsビューでは、スライドでGistsを削除できます.
    機能リストをチェックし、ユーザーインタフェースを提供して、ユーザーがこれらの機能を完了できるようにします.

    API要件


    これらのユーザー機能を整理すると、必要なAPIがそれほど明らかではないことがわかります.そのため、リストを整理するためによく読む必要があります.

    資格認定


    認証されていない場合、共通Gistsを読み取り、匿名でGistsを作成できます.ただし、プライベートGistsの読み取りや編集が必要な場合は、OAuth認証を行う必要があります.Github Gists APIドキュメントを参照してください.
    そのため、ユーザーの認証が必要です.統合の場合、OAuth 2を使用することが好ましい.0.このインタフェースはユーザー名/パスワードを使用して検証されていますが、これらの機密データを心配する必要はありません.なぜなら、OAuth 2.0ユーザー名とパスワードは表示されませんが、インタラクティブなのはユーザーのアプリケーショントークン(token)だけです.OAuthのトークンを安全に保存します.
    APIの認証要件を確認してください.後述の認証章ではOAuth 2を実現する.0認証、トークンベースの認証、および最も基本的なユーザー名/パスワード認証.

    Acceptヘッダの設定(Accept Header)


    Github APIドキュメントでは、以下のように要求されたAcceptヘッダを設定する必要があると説明されています.
      Accept: application/vnd.github.v3+json
    

    つまり、設定しないと、戻ってくる結果はあなたが望んでいるものではありません.だから、私たちは後続の開発で処理します.
    APIドキュメントを確認し、設定する必要があるものを確認します.
    iOS 9では、アップルがApp Transport Security(ATS)概念を導入しており、具体的にはここを参照してください.ATSはSSLを用いたデータ伝送を要求しているが,これは実施にとって非常に申し分がない.悲しいことに、多くのサーバがこの要件を満たしていません.しかし、GitHubのgist APIはATSの要件を満たしているので、追加の処理を追加する必要はありません.
    iOS 9で自分のAPIを呼び出してSSLエラーが発生した場合は、ATSのエラー処理を追加する必要があります.次の章では、どのように解決するかの詳細を見ることができます.章のコードを使用して、サーバが提供する簡単なAPIを呼び出して、SSLエラーがあるかどうかを確認することができます.

    開発計画を立てる


    今、私たちは何をするか、どうすればいいか知っています.では、これらの機能を徐々に実現し、このアプリを改善します.
  • 私たちのAPPを作成し、共通Gistsリストを表示するためにテーブルビューを追加します.
  • カスタムヘッダを追加する.
  • 表ビューのピクチャをロードします.
  • ユーザーが最後までスクロールすると、より多くのGistsがロードされる.
  • プルダウンリフレッシュ機能を追加する.
  • 認証を追加し、ユーザーが私のGistsと私のコレクションリストに切り替えることができます.
  • Gistsの詳細ページを作成します.
  • 詳細ページでコレクションを追加/キャンセルする機能;
  • 削除と新規作成機能を追加します.
  • ネットワークなしの場合の処理を追加します.

  • インプリメンテーションの順序であなたのビューと機能をリストします.Gists Appの開発手順と照合してみます.APIを呼び出すには、アイデンティティ認証が必要な場合は、認証章にジャンプしてから戻ってくる必要があります.すべてのリクエストにカスタムヘッダを追加する必要がある場合は、まずヘッダセクションにジャンプする必要があります.
    アプリケーションの基礎的なニーズもリストされていますが、次はどうすればいいか知っています.しかし、手を出す前に、Swiftでどのようにwebリクエストを行うか、JSON解析を行うか、後でこれらの詳細に陥らないように時間をかけてみましょう.