RestSharp is one of the several ways to create a web service or web request in .NET; we discuss a few other such options in this post. In today’s post, though, we’ll take a look at RestSharp specifically, its features and benefits, and a few examples of RestSharp in action.
Definition of RestSharp
RestSharp is a comprehensive, open-source HTTP client library that works with all kinds of DotNet technologies. It can be used to build robust applications by making it easy to interface with public APIs and quickly access data without the complexity of dealing with raw HTTP requests. RestSharp combines myriad advantages and time-saving features with a simple, clean interface, making it one of the hottest REST tools being used today.
With its simple API and powerful library, REST architecture is the tool of choice for programmers looking to build detailed programs and applications. RESTful architecture provides an information-driven, resource-oriented approach to creating Web applications. It also offers common tasks such as URI generation, payload parsing, and authentication, as configurable options, ensuring that application developers no longer have to worry about low-level tasks such as networking.
Benefits of RestSharp
RestSharp is one of the best libraries to use if you frequently use REST to consume HTTP APIs in DotNet. It comes in particularly handy for Windows phone applications, where REST or SOAP are often used to communicate with external data.
Asynchronous request handling is one of the foremost requirements for programming on Windows platforms. RestSharp supports both synchronous and asynchronous requests, making it a perfect fit for Windows applications. This powerful library saves on programming time and equips developers with useful tools that aid in creating elegant applications that are easy to debug.
The RestSharp library boasts some powerful features, making it a singularly unique tool that syncs admirably with RESTful architecture and helps in creating varied DotNet applications. Some of these features include:
- Custom serialization and deserialization via ISerializer and IDeserializer.
- Both synchronous and asynchronous requests
- Automatic XML and JSON parsing, including fuzzy element name matching (“product_id” in XML/JSON will match C# property named ‘ProductId’)
- Multipart file/form uploads
- oAuth 1, oAuth 2, Basic, NTLM and Parameter-based Authentication
- Support for features such as GET, PUT, HEAD, POST, DELETE and OPTIONS
How RestSharp Works
RestSharp works best as the foundation for a proxy class for an API. The most basic features of RestSharp include creating a request, adding parameters to the request, execution, and handling of said request, deserialization, and authentication. Here’s a look at some RestSharp basics:
- Using RestRequest creates a new request to a specified URL.
- AddParameter will add a new parameter to the request.
- HTTP headers can easily be added to the request you have generated, using request.AddHeader.
- You can replace a token in the request, by using request.AddUrlSegment. This will replace the matching token in the request.
- To execute the request, the command client.Execute(request) is used. The response object can also be used to parse your data.
RestSharp contains inbuilt de-serializers that support XML and JSON. The correct de-serializer is chosen by RestSharp, based on the content type returned by the server.
RestSharp supports the following content types:
- application/json – JsonDeserializer
- application/xml – XmlDeserializer
- text/json – JsonDeserializer
- text/xml – XmlDeserializer
- * – XmlDeserializer
Overriding Default Deserializer
If the default de-serializers don’t answer to your requirements, RestSharp also allows the programmer to create their own de-serializers to handle content. This is done as follows:
- Create a class and implement Deserializer.
- Use RestClient.AddHandler(type, IDeserializer) to register a handler and its associated content type.
- If you need to remove a registered handler, you can use the command RestClient.RemoveHandler(type). RestClient.ClearHandlers() removes all registered handlers.
RestSharp also provides authentication support for different systems like HTTP, NTLM and other parameter based programs. It also lets you create your own Authenticator. The process is simple: Implement IAuthenticator and get it registered with your RestClient.
RestSharp supports the following Authenticators:
The following code example comes from RestSharp on GitHub:
If you have only a small number of one-off requests to make an API, you can use RestSharp as in the example below (also from GitHub):
Advanced Task-Handling in RestSharp
RestSharp takes care of a lot of banal tasks, so you don’t have to spend valuable time on tedious, repetitive work. For instance, the API in RestSharp returns XML, which RestSharp automatically detects and deserializes to the Call object using the default XmlDeserializer.
Also, RestSharp can make a default RestRequest via a GET HTTP request. This setting can be changed in the Method property of RestRequest or by specifying the method in the constructor when creating an instance.
Additional Resources and RestSharp Tutorials
For more information on RestSharp, check out the following links for helpful tutorials and other resources:
- RestSharp: Simple REST and HTTP API Client for .NET
- Simple Usages of HttpWebRequest and RestSharp with JSON.NET
- Introduction to RESTSharp
- Basics of RestSharp in Dot Net
- RestSharp and the factory pattern – you really should
- Using RestSharp to Deserialize JSON Simple Examples