Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

README.md

GRequest

An HTTP request library written in Swift.

##Basic Usage Be simple, as it should be:

Request("https://api.github.com/repos/lingoer/SwiftyJSON/issues").get{
  response in
  println(response.content)//HTTP Body as NSData
}

If you need more infomation:

Request("https://api.github.com/repos/lingoer/SwiftyJSON/issues").get{
  response in
  println(response.headers)
  println(response.MIMEType)
  println(response.statusCode)
  println(response.encoding)
  println(response.error)
  println(response.content)//HTTP Body as NSData
  println(response.string)//HTTP Body as String
  println(response.object)//HTTP Body as Deserialized Custom Object, Default is NSData. See Below for more info
}

Use .query() to pass parameters for GET methods

Request("www.example.com/api").query(["labels":"discuss"]).get{
  response in
}

As for POST:

//This will encode body as application/x-www-form-urlencoded
Request("http://www.example.com").formBody(["key":"value"]).post{
  response in
}
//This will encode body as application/json
Request("http://www.example.com").jsonBody(["key":"value"]).post{
  response in
}
//You can custom your HTTP Body to POST, with Content-Type provided after it.
Request("http://www.example.com").body(customBodyData, typeString:"application/json; charset=utf-8").post{
  response in
}

More:

Request("http://www.example.com").head{
  response in
}
Request("http://www.example.com").put{
  response in
}
Request("http://www.example.com").delete{
  response in
}
Request("http://www.example.com").patch{
  response in
}

##Instances And Chainnings

A Request is in fact a GRequest<T>

It's typealias Request = GRequest<NSData> as default.

And a GRequest is a Generic class specifiying the behavior of the response.

Most methods returns an instance of the GRequest to make chains.

For example .path():

Request("https://api.github.com").path("/repos/lingoer/SwiftyJSON/issues").get{
  response in
}

###Response Deserialization As for the response behavior.

It's mostly about Response Deserialization:

Request("https://api.github.com/repos/lingoer/SwiftyJSON/issues").query(["labels":"discuss"]).get{
  (response:GResponse<JSONValue>) in
  println(response.object)//It's JSON Now
}

Note for more infomation about the JSONValue, see SwiftyJSON

If you need something.Just specify it!

Request("https://www.google.com/images/srpr/logo11w.png").get{
  (response:GResponse<UIImage>) in
  let image:UIImage = response.object!
}

If you don't want to do that every time:

let client = GRequest<JSONValue>("http://api.example.com")
client.path("/path/to/resource").get{
  response in
  println(response.object) //Its JSON Now
}

###Extensibility You can add your custom implementation of your Model deserialization.

By extentions conform protocol: ResponseDeserialization

extension CustomModel:ResponseDeserialization{
  class func convertFromData(data:NSData!) -> (CustomModel?, NSError?)
}

GRequest<CustomModel>("http://api.example.com").get{
  response in
  let model:CustomModel! = response.object
}

About

An Generic HTTP Request Library For Swift

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.