与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
}
}使用模拟文件进行模拟响应
只需使用 ATRequest 的 mockResponse 方法并传入文件路径。
它看起来像这样
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错误代码时 |
| 取消 | 当请求被用户取消时 |
| 通用 | 以上都不是 |