curl を Swift に変換

URLSession を使用して、curl コマンドを Swift コードに変換します。curl2code は WebAssembly を介してブラウザ内で完全に動作するため、データは非公開に保たれます。Kotlin (Android) については、curl to Kotlin 変換ツールをお試しください。Objective-C については、curl to Objective-C をご覧ください。以下に、すぐに使える Swift の例を掲載しています。

ブラウザから curl をコピーする方法

  1. 1

    デベロッパーツールを開く

    F12 キーを押すか、Ctrl+Shift+Iを使用してブラウザのデベロッパーツールを開きます。

  2. 2

    ネットワークタブに移動

    ネットワークタブをクリックし、HTTP リクエストをトリガーするアクションを実行します。

  3. 3

    cURL としてコピー

    リクエストを右クリック → コピーcURL としてコピー を選択します。その後、上に貼り付けてください。

よくある質問

Swift URLSessionとは何ですか?

URLSessionは、iOS、macOS、watchOS、およびtvOS向けのApple純正HTTPクライアントです。データタスク、ダウンロード、アップロード、WebSocket、およびバックグラウンド転送を処理します。Foundationの一部であるため、パッケージのインストールは不要です。HTTP/2、キャッシュ、およびクッキー管理をサポートしています。curl2codeは、すべてのSwift変換においてURLSessionコードを生成します。

URLSessionとAlamofire、どちらを使うべきですか?

URLSessionは標準搭載されており、ほとんどのニーズをカバーしています。サードパーティへの依存を避けるためにこれを使用してください。Alamofireは、チェーン可能なリクエストビルダー、自動リトライ、レスポンス検証、マルチパートアップロードなどの利便性を提供します。小規模なプロジェクトではURLSessionで十分です。同様の標準的なアプローチについては、curl to Kotlin コンバーターまたはcurl to Objective-Cを参照してください。

Swiftで認証を処理するにはどうすればよいですか?

URLRequestにヘッダーを設定します:request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")。Basic認証の場合は、Data("\(user):\(pass)".utf8).base64EncodedString()でエンコードします。curl2codeは、-uおよびBearerヘッダーフラグを自動的にSwiftコードに変換します。

Swiftでマルチパートフォームデータを送信するにはどうすればよいですか?

マルチパートのボディを手動で構築します。バウンダリ文字列を生成し、各フィールド/ファイルをCRLF区切りで追加し、Content-Type: multipart/form-data; boundary=...を設定します。より簡単なマルチパート送信には、Alamofireのupload(multipartFormData:)を使用してください。curl2codeは、URLSession向けの-Fフラグ変換を処理します。

SwiftでHTTPエラーを処理するにはどうすればよいですか?

URLSessionは完了ハンドラーでオプショナルのErrorを返します。nilかどうかを確認してください。レスポンスをHTTPURLResponseにキャストし、statusCodeを確認します。async/await(iOS 15以降)を使用する場合は、do/catchブロック内でtry await URLSession.shared.data(for: request)を使用して、クリーンなエラー処理を行います。

URLSessionでasync/awaitを使用するにはどうすればよいですか?

Swift 5.5以降はasync/awaitをネイティブでサポートしています:let (data, response) = try await URLSession.shared.data(for: request)。これにより、完了ハンドラーのクロージャが線形なコードに置き換わります。同期コンテキストから呼び出すには、Task { }を使用します。並列リクエストの場合は、async letまたはTaskGroupを使用してください。同様のパターンについては、curl to Dartを参照してください。

Swift URLSessionでタイムアウトを設定するにはどうすればよいですか?

URLSessionConfigurationで設定します:config.timeoutIntervalForRequest = 30(リクエストごと)およびconfig.timeoutIntervalForResource = 300(リソース全体)。または、個別のリクエストにrequest.timeoutInterval = 30を設定します。これらはcurlの--max-timeおよび--connect-timeoutオプションに対応します。

URLSessionでプロキシを使用するにはどうすればよいですか?

URLSessionConfigurationにプロキシを設定します:config.connectionProxyDictionary = [kCFProxyHostNameKey: "proxy", kCFProxyPortNumberKey: 8080]。SOCKSプロキシの場合は、kCFStreamPropertySOCKSProxyキーを使用します。URLSessionは、macOS/iOSの設定で構成されたシステム全体のプロキシ設定も尊重します。

SwiftでJSONボディを含むPOSTリクエストを送信する方法は?

curl2codeを使用して、curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URLのようなcurlのPOSTコマンドをSwiftに変換します。生成されたコードではrequest.httpBody = try JSONEncoder().encode(data)を使用します。curl2codeはJSONコンテンツを含む-d/--dataフラグを自動的に検出し、URLSessionのコードに適切なContent-Typeヘッダーを設定します。

SwiftでBearerトークン認証を追加する方法は?

curl -H "Authorization: Bearer YOUR_TOKEN" URLをcurl2codeに渡すと、認証ヘッダーrequest.setValue("Bearer YOUR_TOKEN", forHTTPHeaderField: "Authorization")を含むURLSessionのコードが生成されます。curl2codeは-H "Authorization: Bearer ..."--oauth2-bearerフラグの両方からBearerトークンを検出します。Basic authの場合は、-u user:passを使用してください。

SwiftでContent-Typeヘッダーを設定する方法は?

curl2codeはcurl -H "Content-Type: application/json" URLを、適切なヘッダーrequest.setValue("application/json", forHTTPHeaderField: "Content-Type")を含むURLSessionのコードに変換します。-dデータの場合、curlはデフォルトでapplication/x-www-form-urlencodedを使用し、-Fフォームアップロードの場合はmultipart/form-dataを使用します。curl2codeはそれぞれを正しいURLSession APIにマッピングします。

便利なリンク

curl ガイド

curl を他の言語に変換