AyanTechNetworkingLibrary 1.7.0

AyanTechNetworkingLibrary 1.7.0

Sepehr_Behroozi维护。



与AyanTech网络服务合作的iOS SDK

使用此SDK与AyanTech网络服务通信。

安装

在您的项目PodFile中添加以下行:

pod 'AyanTechNetworkingLibrary`

然后从终端运行pod install命令。

使用

//method can be omitted (default is POST)
let request = ATRequest.request(url: "https://ayantech.ir/some/endpoint/url", method: .post)
request.setJsonBody(body: [
    "Parameters": [
        "ParamA": "ValueA",
        "ParamB": "ValueB"
    ]
])
request.send { response in
    print("response code is: \(response.responseCode)")
    print("response raw string is: \(response.responseString)")
    print("response raw json is: \(response.responseJsonObject)")
    print("parameters json object is: \(response.parametersJsonObject)")
}

模拟响应

好消息😍!您可以使用响应文件来模拟响应。

响应文件是一个包含响应体和头的json文件。目前只能模拟成功的响应。以下是模拟json文件格式和用法:

模拟文件格式

{
  "headers": {},
  "body": {},
  "meta": {
    "statusCode": 200,
    "delay": 2.0
  }
}
  • header应该是包含所有头字段的对象。(可选)
  • meta 应当是一个包含状态码和响应延迟(以秒为单位)的 对象。meta 对象是可选的,statusCode 的默认值是 200,delay 的默认值是 0。
  • body 可以是 任何类型,例如对象、数组、字符串、整数等。(必需)

以下是一个模拟 JSON 文件的示例

{
  "headers": {
    "Access-Control-Allow-Headers": "X-Requested-With,Content-Type, Accept",
    "Access-Control-Allow-Origin": "*",
    "Cache-Control": "private",
    "Content-Length": "805",
    "Content-Type": "application/json; charset=utf-8",
    "Date": "Wed, 12 Sep 2018 06:05:07 GMT",
    "Server": "Microsoft-IIS/8.5",
    "X-AspNet-Version": "4.0.30319",
    "X-Powered-By": "ASP.NET"
  },
  "body": {
    "Parameters": [
      {
        "Detail": "درخواست انتقال وجه",
        "ID": 100,
        "Name": "100",
        "ShowName": "100"
      }
    ],
    "Status": {
      "Code": "G00000",
      "Description": "درخواست با موفقیت انجام شد."
    }
  },
  "meta": {
    "statusCode": 200,
    "delay": 2.0
  }
}

使用模拟文件进行模拟响应

只需使用 ATRequestmockResponse 方法并传入文件路径。
它看起来像这样

ATRequest.request(url: "http://api.ayantech.ir/sampleApi", method: .get)
    .mockResponse(using:  Bundle.main.path(forResource: "mockFile", ofType: nil)!)
    .send { response in
        print(response.responseString ?? "null")
    }

速查表

ATRequest

属性 类型 描述
url String 请求 URL 字符串
method HTTPMethod 请求 HTTP 方法(get、post、put 等)
headers [] 字符串:字符串 请求头
body [字符串:Any] 请求参数(可以是 body 或查询参数,取决于编码)
encoding ParameterEncoding 身体编码方法。此变量决定是否将 body 作为查询参数或 HTTP 身体

ATResponse

属性 类型 描述
headers [] AnyHashable:Any 响应头映射
responseString String? 响应原始体字符串
status Status? 响应状态对象(如果存在)
error ATError? 响应错误(如果状态码不是 20x)
responseCode Int 响应状态码(20x 表示成功)
responseJsonObject [String: Any]? 响应体 JSON 对象格式(如果 body 是有效的 JSON 字符串)
parametersJsonObject [String Any]? 响应 JSON 对象的参数对象(如果存在)

ATError

属性 类型 描述
波斯语描述 String? 波斯语错误展示字符串
代码 Int? 错误代码
类型 ATErrorType? 错误类型
名称 String? 错误代码名称

ATErrorType

案例 描述
无网络 当用户没有网络连接(无论是wifi还是蜂窝)时
超时 当请求超时
服务器错误 当服务器返回50x错误代码时
取消 当请求被用户取消时
通用 以上都不是