NL 是一个基于 URL 会话构建的网络层,可以帮助您实现 REST/GraphQL API 调用。
用法
import NL
protocol SearchClientProtocol { func search(searchText: String, curser: String) async -> FinalResponse }
struct SearchListClient: HTTPClient, SearchClientProtocol { func search(searchText: String, curser: String) async -> FinalResponse { let compose = SearchCompose(searchText: searchText, curser: curser) return await self.serverRequest(compose: compose, decoder: SearchDecodable.self) } }
使您的类或结构体遵循 HTTPClient 协议,通过这种方式,您可以访问其方法。
composite 参数将接受所有输入参数。创建一个如下所示遵循 HttpsRequestComposeProtocol 的类/结构体:
import NL
struct SearchCompose: HttpsRequestComposeProtocol {
var method: NetworkMethod {
return .post
}
var params: Encodable?
init(searchText: String, curser: String) {
self.createQuiry(searchText: searchText, curser: curser)
}
private mutating func createQuiry(searchText: String, curser: String) {
var extra: String = """
query: "\(searchText)", first: 20
"""
if curser.isNotEmpty {
extra +=
"""
, after: "\(curser)"
"""
}
let query =
"""
query { search((extra)) { pageInfo { hasNextPage } edges { cursor node { } } } } """ self.params = QuerySendable(query: query) } }
这里这是一个 GraphQL 查询,您也可以为常规 REST API 调用传递参数。
这是一个正在进行的工程,如果需要,请报告任何错误或功能。