Create REST services quickly and painlessly using simple, aspect-oriented coding.

[TheRestEvent(EventType.Post, "/user/")]
public static User CreateUser(object sender, TheRestEventArgs e)
{
    return User.Insert(Json.Deserialize<User>(e.RequestJson));
}

[TheRestEvent(EventType.Get, "/user/{id}")]
public static User ReadUser(object sender, TheRestEventArgs e)
{
    // Invalid ID? NotFoundException is automatically mapped to a 404 response.
    return User.Select(e.GetParameter<Guid>("id"));
}

REST Services
for .NET Servers


Utterly simple.

Intuitive

TheRest uses our simple aspect-oriented approach to manage server code.

Flexible

Binary and JSON, custom serializers, IIS, Apache and embedded servers. TheRest does it all.

Simple

TheRest just works; throw an exception and it gets translated to an HTTP status code.

Compatible

Consume your REST services from all the devices in your enterprise.

Broad Platform Support

TheRest includes client libraries for iOS, Java, JavaScript, Mac, Mono, Xamarin.Android, Xamarin.iOS, .NET, .NET Compact, Silverlight, Windows Phone, and Windows 8, as well as server support for Mono and .NET.

What is TheRest?

TheRest is a collection of libraries that allow you to build simple, flexible REST services quickly and easily. If you've already used WebSync, then you will be familiar with the aspect-oriented approach used by TheRest's server events.

TheRest provides both the server implementation, which handles processing of the incoming requests, and a variety of client libraries for various platforms, which are used to send data to the server component.

Download a copy today!

What Is REST?

REST is a simple and easy-to-use model for designing your web services. By building your application using REST-style URLs, you get a flexible, easily-maintainable, and easily-extensible API.

REST services are intuitive and easy to understand due to their path-based nature. Sending a GET request to /user/123 should return the user with ID 123. It uses HTTP methods (GET, POST, PUT, DELETE), status codes, and headers (like Range) to exchange information with the server in a manner that is stable and future-proof.