I’m a big fan of making idiomatic language bindings for APIs. Making common tasks such as URI generation, transport, authentication, and payload parsing configurable options and providing a higher-level API lets application developers focus on the business domain instead of low-level networking.

.NET developers looking to write API wrappers without starting from
scratch should check out RestSharp from John Sheehan. Similar to Ruby’s HTTParty and others, RestSharp provides a number of features to make writing wrappers for REST web services a snap, including:

  • Automatic XML and JSON parsing including Fuzzy element name matching (“product_id” in XML/JSON will match C# property named ‘ProductId’)
  • Support for GET, POST, PUT, HEAD, OPTIONS, DELETE
  • oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authentication
  • Multi-part form/file uploads
  • Custom serialization and deserialization via ISerializer and
    IDeserializer
  • Both sync and async requests

Example

Here’s a quick example of making a simple request for XML from an API using Basic Auth:

var client = new RestClient();
client.BaseUrl = "http://twitter.com";
client.Authenticator = new HttpBasicAuthenticator("username", "password");

var request = new RestRequest();
request.Resource = "statuses/friends_timeline.xml";

RestResponse response = client.Execute(request);

In addition to using the built-in Authenticators,
you’re free to create your own:

var client = new RestClient("http://example.com");
client.Authenticator = new SimpleAuthenticator("username", "foo", "password", "bar");

var request = new RestRequest("resource", Method.GET);
client.Execute(request);

Perhaps most impressive is RestSharp’s support for a number of environments including .NET 3.5+, Silverlight 4, Windows Phone 7, Mono, and MonoTouch. Be sure and check out the project readme for advanced usage and tips on contributing.

[Source on GitHub]


Have comments? Send a tweet to @TheChangelog on Twitter.

Subscribe to The Changelog Weekly – our weekly email covering everything that hits our open source radar.