Chuyển đổi curl sang Swift
Chuyển đổi các lệnh curl thành mã Swift bằng URLSession. curl2code chạy hoàn toàn trong trình duyệt của bạn thông qua WebAssembly — dữ liệu của bạn luôn được riêng tư. Đối với Kotlin (Android), hãy thử trình chuyển đổi curl sang Kotlin của chúng tôi. Đối với Objective-C, hãy xem curl sang Objective-C. Dưới đây là các ví dụ Swift sẵn sàng sử dụng.
Cách sao chép curl từ trình duyệt của bạn
- 1
Mở DevTools
Nhấn F12 hoặc Ctrl+Shift+I để mở công cụ dành cho nhà phát triển của trình duyệt.
- 2
Đi tới tab Network
Nhấp vào tab Network và thực hiện hành động kích hoạt yêu cầu HTTP.
- 3
Sao chép dưới dạng cURL
Nhấp chuột phải vào yêu cầu → Sao chép → Copy as cURL. Sau đó dán nó vào bên trên.
Câu hỏi thường gặp
Swift URLSession là gì?
URLSession là client HTTP tích hợp sẵn của Apple cho iOS, macOS, watchOS và tvOS. Nó xử lý các tác vụ dữ liệu, tải xuống, tải lên, WebSocket và truyền tải nền. Không cần cài đặt gói — nó là một phần của Foundation. Hỗ trợ HTTP/2, bộ nhớ đệm và quản lý cookie. curl2code tạo mã URLSession cho tất cả các chuyển đổi Swift.
URLSession so với Alamofire — tôi nên sử dụng cái nào?
URLSession được tích hợp sẵn và đáp ứng hầu hết các nhu cầu — hãy sử dụng nó để tránh các phụ thuộc bên thứ ba. Alamofire bổ sung thêm sự tiện lợi: trình xây dựng yêu cầu có thể chuỗi hóa (chainable), tự động thử lại, xác thực phản hồi và tải lên multipart. Đối với các dự án nhỏ, URLSession là đủ. Đối với các phương pháp tích hợp sẵn tương tự, hãy xem trình chuyển đổi curl sang Kotlin hoặc curl sang Objective-C của chúng tôi.
Làm thế nào để xử lý xác thực trong Swift?
Thiết lập header trên URLRequest: request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization"). Đối với xác thực Basic, hãy mã hóa bằng Data("\(user):\(pass)".utf8).base64EncodedString(). curl2code tự động chuyển đổi các cờ -u và Bearer header sang mã Swift.
Làm thế nào để gửi dữ liệu form multipart trong Swift?
Xây dựng thân multipart theo cách thủ công: tạo một chuỗi boundary, thêm từng trường/tệp với các dấu phân cách CRLF và thiết lập Content-Type: multipart/form-data; boundary=.... Để sử dụng multipart dễ dàng hơn, hãy dùng upload(multipartFormData:) của Alamofire. curl2code xử lý chuyển đổi cờ -F cho URLSession.
Làm thế nào để xử lý lỗi HTTP trong Swift?
URLSession trả về một Error tùy chọn trong các completion — hãy kiểm tra xem nó có nil hay không. Ép kiểu phản hồi sang HTTPURLResponse và kiểm tra statusCode. Với async/await (iOS 15+), hãy sử dụng try await URLSession.shared.data(for: request) trong khối do/catch để xử lý lỗi sạch sẽ.
Làm thế nào để sử dụng async/await với URLSession?
Swift 5.5+ hỗ trợ async/await nguyên bản: let (data, response) = try await URLSession.shared.data(for: request). Điều này thay thế các closure xử lý hoàn tất bằng mã tuyến tính. Sử dụng Task { } để gọi từ các ngữ cảnh đồng bộ. Đối với các yêu cầu đồng thời, hãy sử dụng async let hoặc TaskGroup. Đối với các mẫu tương tự, hãy xem curl sang Dart.
Làm thế nào để thiết lập timeout trong Swift URLSession?
Cấu hình trên URLSessionConfiguration: config.timeoutIntervalForRequest = 30 (mỗi yêu cầu) và config.timeoutIntervalForResource = 300 (tổng cộng). Hoặc thiết lập request.timeoutInterval = 30 trên từng yêu cầu riêng lẻ. Các thiết lập này tương ứng với các tùy chọn --max-time và --connect-timeout của curl.
Làm thế nào để sử dụng proxy với URLSession?
Thiết lập proxy trên URLSessionConfiguration: config.connectionProxyDictionary = [kCFProxyHostNameKey: "proxy", kCFProxyPortNumberKey: 8080]. Đối với proxy SOCKS, hãy sử dụng các khóa kCFStreamPropertySOCKSProxy. URLSession cũng tuân thủ các cài đặt proxy trên toàn hệ thống được cấu hình trong cài đặt macOS/iOS.
Làm thế nào để gửi một yêu cầu POST với thân JSON trong Swift?
Chuyển đổi một lệnh curl POST như curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL sang Swift bằng cách sử dụng curl2code. Mã được tạo sử dụng request.httpBody = try JSONEncoder().encode(data). curl2code tự động phát hiện các cờ -d/--data với nội dung JSON và thiết lập header Content-Type phù hợp trong mã URLSession.
Làm thế nào để thêm xác thực Bearer token trong Swift?
Cung cấp curl -H "Authorization: Bearer YOUR_TOKEN" URL cho curl2code và nó sẽ tạo mã URLSession với header xác thực: request.setValue("Bearer YOUR_TOKEN", forHTTPHeaderField: "Authorization"). curl2code phát hiện Bearer tokens từ cả hai cờ -H "Authorization: Bearer ..." và --oauth2-bearer. Đối với Basic auth, hãy sử dụng -u user:pass.
Làm thế nào để thiết lập header Content-Type trong Swift?
curl2code chuyển đổi curl -H "Content-Type: application/json" URL sang mã URLSession với header chính xác: request.setValue("application/json", forHTTPHeaderField: "Content-Type"). Đối với dữ liệu -d, curl mặc định là application/x-www-form-urlencoded; đối với tải lên biểu mẫu -F, nó sử dụng multipart/form-data. curl2code ánh xạ từng loại tới URLSession API chính xác.