JCSwiftRestful 1.0.2

JCSwiftRestful 1.0.2

James 维护。



JCSwiftRestful

CI Status Version License Platform

简介

这里有三个针对初级开发者的框架。它们可以帮助你提高开发效率,并编写更规范、更容易维护的代码。

JCSwiftCommon:提供扩展、一些常用功能以及基于文件系统 I/O 的轻量级本地存储工具。

JCSwiftRestful:用于 Restful API。它帮助您更专注于处理面向对象和结构化数据。要使用此框架,您必须使用更标准的 RESTful 语义编写代码,无论是在 iOS 还是服务器端。否则,此框架内的自动序列化和反序列化功能将不会工作。

JCSwiftUIWidgets:包含一些自定义组件。由于许多原生的 SwiftUI 方法不支持 iOS 13 或 14,我已经编写了一些组件来支持这些版本。并且所有组件都支持“主题模式”,这意味着您只需修改一个配置,外观就会在每个地方改变。

示例

要使用 JCSwiftRestful,HTTP 响应 MUST 遵循标准 RESTful 格式。这意味着:当状态码为 200 时,responseData 必须遵循单一的数据格式,以及 5XX 代码用于表示参数错误或其他问题。 HTTP 状态码列表

例如,如果 API 返回

{statusCode: 200, responseData: [Person]}

以及在客户端发送的任何其他不同参数的情况下,这个 API SHOULD NOT 返回如下

{statusCode: 200, responseData: Person}

{statusCode: 200, responseData: { errorMsg: "Parameter is incorrect" }}

### 获取 RESTful API 结果的 3 个步骤

*步骤 1:对 JCRequestData 协议有一个默认实现

extension JCRequestData {
 var method: JCHttpMethod {
   return .get
 }

 var parameter: Codable? {
   return nil
 }

 var header: [String: String] {
   var header = [String: String]()
   header["Accept"] = "application/json, text/plain, */*"
   header["Accept-Language"] = "en-US,en;q=0.9"
   header["Content-Type"] = "application/json"
   header["source"] = "iOS"
//    if let token = UserManager.shared.userToken, token.count != 0 {
//      header["Authorization"] = "userToken"
//    }
   return header
 }
}

*步骤 2:查看响应中的 JSON 字符串并将其转换为 Swift Struct/Class

$ curl http://ip.jsontest.com
{"ip": "24.84.236.255"}

转换为 (这里我命名为 IpTestRequestData,它的响应只有一个名为 "ip" 的字符串属性)

private struct IpTestRequestData: JCRequestData {
  struct Response: Codable {
    var ip: String
  }

  var apiPath: String {
    "http://ip.jsontest.com"
  }
}

*步骤 3:发送请求并获取结果

Task {
    let result = try? await JCRequestCenter.shared.sendRequest(IpTestRequestData(), decodeType: IpTestRequestData.Response.self)
    print(result?.ip ?? "Error")
}

要求

iOS 部署目标 >= 13.0

安装

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

pod 'JCSwiftRestful'

作者

James,[email protected]LinkedIn

Fanny,[email protected]

许可协议

JCSwiftRestful 提供 MIT 许可。有关更多信息,请参阅 LICENSE 文件。