RMHttp 1.6.1

RMHttp 1.6.1

Roger Molas 维护。



RMHttp 1.6.1

RMHttp

Build Status Status license Platform Version Twitter

RMHttp Lightweight RESTful library for iOS and watchOS RMHttp 是一个为 iOS 和 watchOS 设计的轻量级 REST 库。

功能

  • 链式请求
  • URL / JSON 参数编码
  • 基于 RFC2616 的 HTTP 方法 GET/POST/DELETE/PATCH/PUT
  • 自定义请求构建器 / HEADERS / 参数
  • Form-data 支持
  • 动态响应处理器(JSONObject,JSONArray,String)
  • Codable 支持
  • 支持参数容器 RMParams
待办事项
  • [-] 支持 Upload/Download 资源

示例

要运行示例项目,请先克隆存储库,然后从 Example 目录运行 pod install

安装

RMHttp 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中

pod 'RMHttp'

安装

pod "RMHttp"

在您的终端中运行以下命令

$ pod install

用法

HTPP 方法

HTTP 方法在公共枚举 RMHttpMethod 中声明。

GETPOSTDELETEPUTPATCH

参数编码

编码在公共枚举 Encoding 中声明

URLEncodingJSONEncoding

序列化

JSONObject - 表示 Dictionary<String, Any>

{
   "data" : "value",
   "isBoolean" : true,
   "list": [
      "object1",
      "object2"
   ]
}

JSONArray - 表示 [Dictionary<String, Any>]

[
   { "data1" : "value1"},
   { "data2" : "value2"},
   { "data3" : "value3"},
]

String 任何字符串表示(例如 HTML 字符串,XML 字符串,纯文本)

构建请求

从字典类型构建请求
let params = [
   "string":"Ipsum",   // String
   "number": 100,      // Number
   "boolean":true      // Boolean
] as [String : Any]

let urlString = "https://httpbin.org/get"
let request = RMRequest(urlString, method: .GET(.URLEncoding), parameters: params, hearders: nil)
RMParams容器构建请求

URL查询表示:names[]=lorem&names[]=ipsum&names[]=dolor&

let lorem = RMParams(key: "names[]", value: "lorem")
let ipsum = RMParams(key: "names[]", value: "ipsum")
let dolor = RMParams(key: "names[]", value: "dolor")
let params = [lorem, ipsum, dolor]

let urlString = "https://httpbin.org/post"
request = RMRequest(urlString, .GET(.URLEncoding), params, nil)
return request

链式响应处理器

期望数组对象响应
RMHttp.JSON(request: request) { (response:JSONArray?, error) in
   guard error == nil else {
      self.title = "Response Error"
	  self.activity.stopAnimating()
	  self.textView.text = "\(err)"
	  return
   }
   self.activity.stopAnimating()
   if let data = response {
      self.title = "Response Sucess"
      self.textView.text = "\(data)"
   }
}
期望JSON对象响应
RMHttp.JSON(request: request) { (response:JSONObject?, error) in
   guard error == nil else {
      self.title = "Response Error"
	  self.activity.stopAnimating()
	  self.textView.text = "\(err)"
	  return
   }
   self.activity.stopAnimating()
   if let data = response {
      self.title = "Response Sucess"
	  self.textView.text = "\(data)"
   }
}

返回HTTP响应的通用方法具有符合RMHttpProtocol (例如 JSONObject, JSONArray, String, )的参数data的参数。

public class func JSON<T:RMHttpProtocol>(request: RMRequest, completionHandler: @escaping Handler<T>)

表单数据(FORM-DATA)

从字典类型添加字段
let params =  [
   "name":"lorem", 
   "lastName":"ipsum"
]
let urlString = "https://httpbin.org/post"
let request = RMRequest(urlString, .POST(.FomDataEncoding), params, nil)
return request
添加文件

请参阅 媒体类型

let request = RMRequest(url: URL(string: urlString)!)
request.addForm(field: "file", file: imgData, fileName: "image.jpeg", mimeType: "image/jpeg")
request.setHttp(method: .POST(.FomDataEncoding))
return request
或手动添加字段
let request = RMRequest(url: URL(string: urlString)!)
request.addForm(fieldName: "field1", value: "lorem ipsum")
request.addForm(fieldName: "field2", value: "sit dolor amet")

作者

rogermolas, [email protected]

许可证

MIT许可证 (MIT)

版权所有 (c) 2018-2020 Roger Molas

本软件和相关文档文件的副本(以下简称“软件”)的使用、复制、修改、合并、出版、分发、再许可、出售以及允许他人以软件提供者的方式使用,经济报酬并不作限制,只要遵守以下条件:

上述版权声明和许可声明应包含在软件的所有副本或其主要部分中。

本软件按原样提供,不得保证其适销性、满足特定目的性或不侵犯任何专利,版权或商标权。在任何情况下,作者或版权持有者不对任何索赔、损害或其他责任的声称负责,无论该索赔、损害或其他责任是由于合同、侵权或其他任何原因引起,是否与本软件或本软件的使用有关。