SwiftJSONRPC 0.9.0

SwiftJSONRPC 0.9.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2022年7月
SPM支持 SPM

Denis Kolyasev 维护。



  • Denis Kolyasev

SwiftJSONRPC

CI Status

使用方法

定义服务

import SwiftJSONRPC

class UserService: RPCService {
    func vote(rating: Int) async throws -> Int {
        return try await invoke("vote", params: ["rating": rating])
    }

    func create(name: String) async throws -> User {
        return try await invoke("create", params: ["name": name])
    }

    // And other JSON-RPC methods
}

您可以根据需求定义任意数量的服务。

发起请求

// Init JSON-RPC client
let url = URL(string: "http://example.com/rpc")!
let client = RPCClient(url: url)

// Init JSON-RPC service
let service = MyService(client: client)

// Perform request
try await service.vote(rating: 5)

结果解码

SwiftJSONRPC 使用 Swift 的 Decodable 协议来解析响应对象。

struct User: Decodable {
    let id: String
    let name: String
}

class UserService: RPCService {
    func getCurrentUser() async throws -> User {
        return try await invoke("getCurrentUser")
    }
}

let user = try await userService.getCurrentUser()
print("Current user ID = \(user.id), name = \(user.name)")

如需修改JSONDecoder的行为,请使用RPCClient.coder.resultDecoder

client.coder.resultDecoder.dateDecodingStrategy = .iso8601

参数编码

SwiftJSONRPC使用Swift的Encodable协议对请求参数进行编码。

struct Message: Encodable {
    let text: String
}

class MessageService: RPCService {
    func send(message: Message) async throws {
        return try await invoke("sendMessage", params: message)
    }
}

let message = Message(text: "Hello World")
try await messageService.send(message: message)

如需修改JSONEncoder的行为,请使用RPCClient.coder.paramsEncoder

client.coder.paramsEncoder.dateDecodingStrategy = .iso8601

安装

CocoaPods

SwiftJSONRPC通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中:

pod "SwiftJSONRPC"

Carthage

github "kolyasev/SwiftJSONRPC"

Swift包管理器

dependencies: [
    .package(url: "https://github.com/kolyasev/SwiftJSONRPC.git", .upToNextMajor(from: "0.7.0"))
]

待办事项

  • 添加对不带“id”成员的通知请求对象的支持。

作者

Denis Kolyasev,[email protected]

许可证

SwiftJSONRPC 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。