swift-http-client - Communiquez facilement via HTTP dans Swift.

(Communicate via HTTP easily in Swift.)

Created at: 2021-07-31 19:52:21
Language: Swift
License: MIT

client http rapide

CI Sortie Version CocoaPods Compatibilité Carthage Compatibilité rapide Compatibilité de la plate-forme Licence Twitter

Communiquez facilement via HTTP dans Swift.

Table des matières

Exigence

  • Xcode 13.2+ (Swift 5.5.2+)

Installation

Gestionnaire de paquets Swift (recommandé)

Forfait

Vous pouvez ajouter ce package à

Package.swift
, l'inclure dans vos dépendances cibles.

let package = Package(
    dependencies: [
        .package(url: "https://github.com/uhooi/swift-http-client", .upToNextMajor(from: "0.6.0")),
    ],
    targets: [
        .target(
            name: "<your-target-name>",
            dependencies: ["HTTPClient"]),
    ]
)

Code X

Vous pouvez ajouter ce package sur Xcode. Voir la documentation .

Cosses De Cacao

Cette bibliothèque est disponible via CocoaPods . Pour l'installer, ajoutez simplement la ligne suivante à votre

Podfile
:

pod 'UHIHTTPClient', '~> 0.6.0'

Carthage

Cette bibliothèque est disponible via Carthage . Pour l'installer, ajoutez simplement la ligne suivante à votre

Cartfile
:

github "uhooi/swift-http-client" ~> 0.6.0

Comment utiliser

Vous pouvez simplement importer

HTTPClient
pour l'utiliser.

  1. Implémentez une structure de corps de requête conforme au

    Encodable
    protocole. (Optionnel)

    struct RegisterUserRequestBody: Encodable {
        let name: String
        let description: String
    }
  2. Implémentez une structure de corps de réponse conforme au

    Decodable
    protocole.

    struct RegisterUserResponseBody: Decodable {
        let id: String
    }
    
    extension RegisterUserResponseBody {
        func convertToUserID() -> UserID { .init(id: self.id) }
    }
  3. Implémentez une structure de requête conforme au

    Request
    protocole.

    import HTTPClient
    
    struct RegisterUserRequest: Request {
        typealias ResponseBody = RegisterUserResponseBody
        var path: String { "user/create_user" }
        var httpMethod: HTTPMethod { .post }
        var httpHeaders: [HTTPHeaderField: String]? { [.contentType: ContentType.applicationJson.rawValue] }
    }
  4. Créez une instance de la

    HTTPClient
    classe et appelez la
    request
    méthode.

    struct UserID: Identifiable, Equatable {
        let id: String
    }
    protocol VersatileRepository {
        func registerUser(name: String, description: String) async throws -> UserID
    }
    import HTTPClient
    
    final class VersatileAPIClient {
        static let shared = VersatileAPIClient()
        
        private let httpClient = HTTPClient(baseURLString: "https://example.com/api/")
    }
    
    extension VersatileAPIClient: VersatileRepository {
        func registerUser(name: String, description: String) async throws -> UserID {
            let requestBody = RegisterUserRequestBody(name: name, description: description)
            let responseBody = try await httpClient.request(RegisterUserRequest(), requestBody: requestBody)
            return responseBody.convertToUserID()
        }
    }
    do {
        let userID = try await VersatileAPIClient.shared.registerUser(name: "Uhooi", description: "Green monster.")
        // Do something.
    } catch {
        // Do error handling.
        print(error)
    }

Contribution

Je serais heureux si vous contribuez :)

Statistiques

Statistiques