CocoaPods trunk is moving to be read-only. Read more on the blog, there are 12 months to go.
| TestsTested | ✓ |
| LangLanguage | SwiftSwift |
| License | MIT |
| ReleasedLast Release | Jun 2015 |
| SPMSupports SPM | ✗ |
Maintained by Christoffer Hallas.
Minimalistic Swift HTTP request agent for iOS and OS X.
This is a tiny framework that gives you nice a API for crafting HTTP requests.
Throughout this documentation req is used as an instance of Agent.
The Agent API is simple and easy to use. Simply use Agent.<verb>(url) and you’re good to go.
It’s possible to perform an entire request with a single call. Supply the required parameters when first creating the request. There are usually multiple degrees of overloading.
let done = { (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
};
Agent.post("http://example.com", headers: [ "Header": "Value" ],
data: [ "Key": "Value" ], done: done)It’s possible to omit most overloaded parameters such as headers.
Every Agent method returns the Agent itself, therefore it is possible to write more expressive code.
Agent.post("http://example.com")
.send([ "Key": "Value" ])
.end({ (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
}
)One of the features that makes Agent is the response closure, instead of setting up a delegate for every HTTP request you have to make. You can simply react to the response in a closure.
In Agent, the response is of the type (response: NSHTTPURLResponse!, data: Agent.Data!, error: NSError!). A response closure that reads JSON is easily created as seen below.
let done = { (response: NSHTTPURLResponse!, data: Agent.Data!, error: NSError!) -> Void in
let json = data! as Dictionary<String, String>
println(json["Key"]!)
}GET(url: String) let req = Agent.get("http://example.com")
req.end({ (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
})POST(url: String) let req = Agent.post("http://example.com")
req.send([ "Key": "Value" ])
req.end({ (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
})PUT(url: String) let req = Agent.put("http://example.com")
req.send([ "Key": "Value" ])
req.end({ (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
})DELETE(url: String) let req = Agent.delete("http://example.com")
req.end({ (response: NSHTTPURLResponse?, data: AnyObject?, error: NSError?) -> Void in
// react to the result of your request
})send(data: AnyObject) -> Agent Will JSON serialize any data and send it along as the HTTP body. Also implicitly sets the Content-Type header to application/json.
set(header: String, value: String) -> Agent Sets the HTTP header to value.
end(done: Response) -> Agent Will start the request and call done when it’s complete.
$0 will be an NSHTTPURLResponse.$1 will be an AnyObject that you can type cast to either an Array or Dictionary.$2 will be an NSErrror that you can inspect for more information.You can always access the underlying NSMutableURLRequest using req.request.
We’re happy to receive any pull requests. Right now we’re working hard on a number of features as seen below.
Any issue is appreciated.
MIT