Alamofire - Swift でのエレガントな HTTP ネットワーキング

(Elegant HTTP Networking in Swift)

Created at: 2014-07-31 13:56:19
Language: Swift
License: MIT

Alamofire: Swift でのエレガントなネットワーキング

迅速 プラットフォーム CocoaPods互換 カルタゴ対応 Swift パッケージ マネージャー ツイッター スウィフト フォーラム

Alamofire は、Swift で記述された HTTP ネットワーク ライブラリです。

特徴

  • [x] 連鎖可能なリクエスト / レスポンス メソッド
  • [x] Swift 同時実行サポート iOS 13、macOS 10.15、tvOS 13、および watchOS 6 に戻ります。
  • [x] コンバインサポート
  • [x] URL / JSON パラメータのエンコーディング
  • [x] ファイル/データ/ストリーム/MultipartFormData のアップロード
  • [x] リクエストまたはレジュームデータを使用してファイルをダウンロード
  • [x] 認証
    URLCredential
  • [x] HTTP 応答の検証
  • [x] 進行状況を伴うアップロードおよびダウンロードの進行状況の終了
  • [x] cURL コマンド出力
  • [x] 要求を動的に適応させて再試行する
  • [x] TLS 証明書と公開鍵のピニング
  • [x] ネットワーク到達可能性
  • [x] 包括的なユニットと統合テストの範囲
  • [x]完全なドキュメント

コンポーネント ライブラリ

Alamofire をコア ネットワーキングの実装に特に集中させるために、追加のコンポーネント ライブラリがAlamofire Software Foundationによって作成され、Alamofire エコシステムに追加機能がもたらされました。

  • AlamofireImage - イメージ レスポンス シリアライザ
    UIImage
    UIImageView
    拡張機能、カスタム イメージ フィルタ、メモリ内キャッシュの自動パージ、優先度ベースのイメージ ダウンロード システムを含むイメージ ライブラリ。
  • AlamofireNetworkActivityIndi​​cator - Alamofire を使用して iOS 上のネットワーク アクティビティ インジケーターの可視性を制御します。ちらつきを軽減するのに役立つ構成可能な遅延タイマーが含まれており
    URLSession
    、Alamofire によって管理されていないインスタンスをサポートできます。

要件

プラットホーム 最小 Swift バージョン インストール 状態
iOS 10.0 以降 / macOS 10.12 以降 / tvOS 10.0 以降 / watchOS 3.0 以降 5.3 CocoaPods , Carthage , Swift Package Manager ,マニュアル 完全にテスト済み
Linux 最新のみ Swift パッケージ マネージャー 構築中だがサポートされていない
ウィンドウズ 最新のみ Swift パッケージ マネージャー 構築中だがサポートされていない

Linux および Windows での既知の問題

Alamofire は Linux と Windows で構築されていますが、機能が不足しており、基盤に多くの問題があり、

swift-corelibs-foundation
完全な機能を妨げ、クラッシュを引き起こす可能性があります。これらには以下が含まれます:

  • ServerTrustManager
    関連する証明書の機能は利用できないため、証明書のピン留めやクライアント証明書のサポートはありません。
  • HTTP Basic や HTTP Digest など、HTTP 認証のさまざまな方法がクラッシュする可能性があります。応答にサーバー チャレンジが含まれていると、クラッシュが発生する可能性があります。
  • CachedResponseHandler
    基になるデリゲート メソッドが呼び出されないため、関連付けられた APIを介したキャッシュ コントロールは使用できません。
  • URLSessionTaskMetrics
    集まることはありません。

これらの問題により、Alamofire は Linux および Windows ではサポートされていません。クラッシュが発生した場合は、Swift バグ レポーターに報告してください。

移行ガイド

コミュニケーション

  • Alamofire を使用してネットワーク リクエストを作成する際にサポートが必要な場合は、 Stack Overflowと tagを使用してください
    alamofire
  • API を検索または理解する必要がある場合は、Alamofire が構築されている上にある について、当社のドキュメントまたはApple のドキュメントを
    URLSession
    確認してください。
  • Alamofire の機能についてサポートが必要な場合は、swift.orgのフォーラムをご利用ください。
  • Alamofire のベスト プラクティスについて話し合いたい場合は、swift.org のフォーラムをご利用ください。
  • 機能のリクエストについて話し合いたい場合は、swift.org のフォーラムをご利用ください。
  • バグを見つけた場合は、ここで GitHub で問題を開き、ガイドに従ってください。詳細なほど良いです!

インストール

ココアポッド

CocoaPodsは、ココア プロジェクトの依存関係マネージャーです。使用方法とインストール手順については、Web サイトを参照してください。CocoaPods を使用して Alamofire を Xcode プロジェクトに統合するには、次のように指定します

Podfile

pod 'Alamofire'

カルタゴ

Carthageは、依存関係を構築し、バイナリ フレームワークを提供する分散型の依存関係マネージャーです。Carthage を使用して Alamofire を Xcode プロジェクトに統合するには、次のように指定します

Cartfile

github "Alamofire/Alamofire"

Swift パッケージ マネージャー

Swift Package Managerは、Swift コードの配布を自動化するためのツールであり、

swift
コンパイラに統合されています。

Swift パッケージのセットアップが完了したら、 Alamofire を依存関係として追加するのは、それを の

dependencies
値に追加するのと同じくらい簡単
Package.swift
です。

dependencies: [
    .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.6.1"))
]

手動で

前述の依存関係マネージャーを使用したくない場合は、Alamofire をプロジェクトに手動で統合できます。

組み込みフレームワーク

  • ターミナルを開き

    cd
    、最上位のプロジェクト ディレクトリに移動し、プロジェクトが git リポジトリとして初期化されていない場合は、次のコマンドを実行します。

    $ git init
  • 次のコマンドを実行して、Alamofire を git サブモジュールとして追加します。

    $ git submodule add https://github.com/Alamofire/Alamofire.git
  • 新しいフォルダーを開き、アプリケーションの Xcode プロジェクトのプロジェクト ナビゲーターに

    Alamofire
    ドラッグします。
    Alamofire.xcodeproj

    アプリケーションの青いプロジェクト アイコンの下にネストされて表示されます。他のすべての Xcode グループより上か下かは関係ありません。

  • Project Navigator で を選択し

    Alamofire.xcodeproj
    、デプロイメント ターゲットがアプリケーション ターゲットと一致することを確認します。

  • 次に、プロジェクト ナビゲーター (青いプロジェクト アイコン) でアプリケーション プロジェクトを選択してターゲット構成ウィンドウに移動し、サイドバーの [ターゲット] 見出しの下でアプリケーション ターゲットを選択します。

  • そのウィンドウの上部にあるタブ バーで、[一般] パネルを開きます。

  • +
    「埋め込みバイナリ」セクションの下にあるボタンをクリックします。

  • フォルダ内にネストされた

    Alamofire.xcodeproj
    の 2 つの異なるバージョンを持つ 2つの異なるフォルダがそれぞ​​れ表示されます。
    Alamofire.framework
    Products

    どの

    Products
    フォルダから選択するかは問題ではありませんが、上または下のどちらを選択するかは重要です
    Alamofire.framework

  • Alamofire.framework
    iOSの場合は上を、macOS の場合は下を選択します。

    プロジェクトのビルド ログを調べて、選択したものを確認できます。のビルド ターゲットは、、、、またはとして

    Alamofire
    リストされます。
    Alamofire iOS
    Alamofire macOS
    Alamofire tvOS
    Alamofire watchOS

  • 以上です!

    Alamofire.framework
    、シミュレーターとデバイスでビルドするために必要なファイルのコピー ビルド フェーズで、ターゲットの依存関係、リンクされたフレームワーク、および組み込みフレームワークとして自動的に追加されます。

貢献する

Alamofire に貢献する前に、貢献ガイドに記載されている手順をお読みください。

レーダーを開く

次のレーダーは、Alamofire の現在の実装に何らかの影響を与えます。

  • rdar://21349340
    - テスト ケースでのフリー ブリッジの問題により、コンパイラが警告をスローする
  • rdar://26870455
    - シミュレーターでバックグラウンド URL セッション構成が機能しない
  • rdar://26849668
    - 一部の URLProtocol API が正しく処理されない
    URLRequest

解決済みレーダー

次のレーダーは、Alamofire プロジェクトに対して提出された後、時間の経過とともに解決されました。

  • rdar://26761490
    - 一般的な使用方法でメモリ リークを引き起こす迅速な文字列補間。
    • (解決済み): 2017 年 9 月 1 日 Xcode 9 ベータ 6。
  • rdar://36082113
    -
    URLSessionTaskMetrics
    watchOS 3.0 以降でリンクに失敗する
    • CFNetwork
      (解決済み):リンクされたフレームワークに追加するだけです。
  • FB7624529
    -watchOS
    urlSession(_:task:didFinishCollecting:)
    で呼び出されたことはありません
    • (解決済み): watchOS 7 以降でメトリクスが収集されるようになりました。

よくある質問

アラモファイアの名前の由来は?

アラモファイアは、テキサス州の州花であるブルーボンネットの交配種であるアラモファイアの花にちなんで名付けられました。

クレジット

Alamofire はAlamofire Software Foundationによって所有および管理されています。プロジェクトの更新とリリースについては、Twitter ( @AlamofireSF ) でフォローできます。

セキュリティ開示

Alamofire のセキュリティ上の脆弱性を特定したと思われる場合は、できるだけ早くsecurity@alamofire.orgに電子メールで報告してください。公開の問題トラッカーには投稿しないでください。

スポンサーシップ

ASFは、連邦非営利組織として正式に登録を維持するための資金を調達しようとしています。 登録することで、財団のメンバーは法的保護を受けることができ、寄付金を非課税で使用できるようになります。 ASF のスポンサーになることで、次のことが可能になります。

  • 非営利団体を良好な状態に保つために、毎年の弁護士費用を支払います
  • すべての質問とセキュリティの問題を常に把握できるように、メールサーバーの料金を支払います
  • エッジケースのテストを容易にするために、テストサーバーに資金を提供する可能性があります
  • 私たちのプロジェクトの1つにフルタイムで取り組む開発者に資金を提供する可能性があります

ASF ライブラリのコミュニティの採用は驚くべきものでした。 プロジェクトに対する皆様の熱意に大変恐縮しており、前進するためにできる限りのことを引き続き行いたいと考えています。 皆様の継続的なご支援により、ASF はその範囲を拡大し、コア メンバーにより良い法的安全を提供することができます。 私たちの図書館のいずれかを仕事に使用している場合は、雇用主が寄付に関心があるかどうかを確認してください。 私たちの目標を達成するために、1 回でも毎月でも、いくらでも寄付していただければ幸いです。

スポンサー アラモファイア

サポーター

MacStadiumは Alamofire に無料のホスト型 Mac mini を提供しています。

MacStadium を搭載

ライセンス

Alamofire は MIT ライセンスの下でリリースされています。詳細については、ライセンスを参照してください。