Alamofire - スウィフトでのエレガントなHTTPネットワーキング

(Elegant HTTP Networking in Swift)

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

アラモファイア:スウィフトでのエレガントなネットワーキング

速い プラットフォーム 互換性のあるココアポッド カルタゴ互換 スウィフトパッケージマネージャ 囀る スウィフトフォーラム

Alamofire は Swift で書かれた HTTP ネットワークライブラリです。

顔立ち

  • [x] チェーナブルな要求/応答メソッド
  • [x] Swift Concurrency Support iOS 13、macOS 10.15、tvOS 13、watchOS 6 に戻る
  • [x] サポートの結合
  • [x] URL / JSONパラメータエンコーディング
  • [x] ファイルのアップロード/データ/ストリーム/マルチパートフォームデータ
  • [x] 要求データまたは再開データを使用したファイルのダウンロード
  • [x] 認証
    URLCredential
  • [x] HTTPレスポンスの検証
  • [x] 進行状況のクロージャをアップロードおよびダウンロードする
  • [x] cURL コマンドの出力
  • [x] 要求の動的適応と再試行
  • [x] TLS証明書と公開鍵のピン留め
  • [x] ネットワーク到達可能性
  • [x] 包括的なユニット/統合テストのカバレッジ
  • [x] 完全なドキュメント

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

Alamofireがコアネットワーキングの実装に特に焦点を合わせ続けるために、Alamofireソフトウェア財団によって追加のコンポーネントライブラリが作成され、Alamofireエコシステムに追加の機能がもたらされました。

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

必要条件

プラットホーム 最小スウィフトバージョン 取り付け 地位
iOS 10.0+ / macOS 10.12+ / tvOS 10.0+ / watchOS 3.0+ 5.3 CocoaPods, Carthage, Swift Package Manager, Manual 完全にテスト済み
リナックス 最新のみ スウィフトパッケージマネージャ ビルドしているがサポートされていない
ウィンドウズ 最新のみ スウィフトパッケージマネージャ ビルドしているがサポートされていない

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

AlamofireはLinuxとWindows上に構築されていますが、完全な機能を妨げ、クラッシュを引き起こす可能性のある多くの問題が基盤に欠けています。これらには以下が含まれます:

swift-corelibs-foundation

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

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

移行ガイド

通信

  • Alamofire を使用してネットワーク要求を行う際にサポートが必要な場合は、スタックオーバーフローとタグ を使用します。
    alamofire
  • API を見つけたり理解したりする必要がある場合は、Alamofire が構築されている URLSessionドキュメントまたは Apple のドキュメントを参照してください。
  • Alamofireの機能についてサポートが必要な場合は、swift.org のフォーラムをご利用ください。
  • Alamofireのベストプラクティスについて議論したい場合は、swift.org のフォーラムをご利用ください。
  • 機能要求について話し合う場合は、swift.org のフォーラムをご利用ください。
  • バグが見つかった場合は、GitHub でここで問題を開き、ガイドに従ってください。詳細が多ければ多いほど良いです!

取り付け

ココアポッド

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

Podfile

pod 'Alamofire'

カルタゴ

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

Cartfile

github "Alamofire/Alamofire"

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the

swift
compiler.

Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the

dependencies
value of your
Package.swift
.

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

Manually

If you prefer not to use any of the aforementioned dependency managers, you can integrate Alamofire into your project manually.

Embedded Framework

  • Open up Terminal,

    cd
    into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:

    $ git init
  • Add Alamofire as a git submodule by running the following command:

    $ git submodule add https://github.com/Alamofire/Alamofire.git
  • Open the new

    Alamofire
    folder, and drag the
    Alamofire.xcodeproj
    into the Project Navigator of your application's Xcode project.

    It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.

  • Select the

    Alamofire.xcodeproj
    in the Project Navigator and verify the deployment target matches that of your application target.

  • Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.

  • In the tab bar at the top of that window, open the "General" panel.

  • Click on the

    +
    button under the "Embedded Binaries" section.

  • You will see two different

    Alamofire.xcodeproj
    folders each with two different versions of the
    Alamofire.framework
    nested inside a
    Products
    folder.

    It does not matter which

    Products
    folder you choose from, but it does matter whether you choose the top or bottom
    Alamofire.framework
    .

  • Select the top

    Alamofire.framework
    for iOS and the bottom one for macOS.

    You can verify which one you selected by inspecting the build log for your project. The build target for

    Alamofire
    will be listed as
    Alamofire iOS
    ,
    Alamofire macOS
    ,
    Alamofire tvOS
    , or
    Alamofire watchOS
    .

  • And that's it!

    The

    Alamofire.framework
    is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.

Contributing

Before contributing to Alamofire, please read the instructions detailed in our contribution guide.

Open Radars

The following radars have some effect on the current implementation of Alamofire.

  • rdar://21349340
    - Compiler throwing warning due to toll-free bridging issue in the test case
  • rdar://26870455
    - Background URL Session Configurations do not work in the simulator
  • rdar://26849668
    - Some URLProtocol APIs do not properly handle
    URLRequest

Resolved Radars

The following radars have been resolved over time after being filed against the Alamofire project.

  • rdar://26761490
    - Swift string interpolation causing memory leak with common usage.
    • (Resolved): 9/1/17 in Xcode 9 beta 6.
  • rdar://36082113
    -
    URLSessionTaskMetrics
    failing to link on watchOS 3.0+
    • (Resolved): Just add
      CFNetwork
      to your linked frameworks.
  • FB7624529
    -
    urlSession(_:task:didFinishCollecting:)
    never called on watchOS
    • (Resolved): Metrics now collected on watchOS 7+.

FAQ

What's the origin of the name Alamofire?

Alamofire is named after the Alamo Fire flower, a hybrid variant of the Bluebonnet, the official state flower of Texas.

Credits

Alamofire is owned and maintained by the Alamofire Software Foundation. You can follow them on Twitter at @AlamofireSF for project updates and releases.

Security Disclosure

If you believe you have identified a security vulnerability with Alamofire, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker.

Sponsorship

The ASF is looking to raise money to officially stay registered as a federal non-profit organization. Registering will allow Foundation members to gain some legal protections and also allow us to put donations to use, tax-free. Sponsoring the ASF will enable us to:

  • Pay our yearly legal fees to keep the non-profit in good status
  • Pay for our mail servers to help us stay on top of all questions and security issues
  • Potentially fund test servers to make it easier for us to test the edge cases
  • Potentially fund developers to work on one of our projects full-time

The community adoption of the ASF libraries has been amazing. We are greatly humbled by your enthusiasm around the projects and want to continue to do everything we can to move the needle forward. With your continued support, the ASF will be able to improve its reach and also provide better legal safety for the core members. If you use any of our libraries for work, see if your employers would be interested in donating. Any amount you can donate, whether once or monthly, to help us reach our goal would be greatly appreciated.

Sponsor Alamofire

Supporters

MacStadium provides Alamofire with a free, hosted Mac mini.

Powered by MacStadium

License

Alamofire is released under the MIT license. See LICENSE for details.