Home

Awesome

Nancy.Rest.Module

A Nancy Module capable of mounting an annotated interface and provides transversal filtering capabilities.

Installation

Or

Basic Usage

####Create your Server signatures:


namespace Nancy.Rest.ExampleServer
{
    [RestBasePath("/api")]
    public interface IExample
    {
        [Rest("Person", Verbs.Get)]
        List<Person> GetAllPersons();
        
        [Rest("Person/{personid}", Verbs.Get)]
        Person GetPerson(int personid);
        
        [Rest("Person", Verbs.Post)]
        bool SavePerson(Person person);

        [Rest("Person/{personid}", Verbs.Delete)]
        bool DeletePerson(int personid);
    }
}

####And Your Server Models


namespace Nancy.Rest.ExampleServer
{    
    public class Person
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }
        
        [Level(1)]
        public bool IsProgrammer { get; set; }
        
        [Tags("Attr")]
        public List<string> Attributes { get; set; }
    }
}

The following annotations exists:

Example Server

Your Server Implementation

namespace Nancy.Rest.ExampleServer
{
    public class ExampleImplementation : IExample
    {
        public List<Person> GetAllPersons
        {
        //TODO        
        }
        
        public Person GetPerson(int personid)
        {
        //TODO                
        }
        
        public bool SavePerson(Person person)
        {
        //TODO
        }
        
        public bool DeletePerson(Person person)
        {
        //TODO
        }
    }
}
Bootstrapper

namespace Nancy.Rest.ExampleServer
{
    public class Bootstrapper : RestBootstrapper
    {
    
    }
}   

Module

namespace Nancy.Rest.ExampleServer
{   
    public class ExampleModule : RestModule
    {
        public ExampleModule()
        {
            SetRestImplementation(new ExampleImplementation());
        }
    }

}
Running Nancy selfhosted

    public class Example
    {
        public void Run()
        {
            HostConfiguration config = new HostConfiguration();
            config.UrlReservations.CreateAutomatically = false;
            config.RewriteLocalhost = true;
            NancyHost hostNancy = new Nancy.Hosting.Self.NancyHost(config, new Uri("http://localhost"));
            hostNancy.Start();
        }
    }
}

###To use the server in C# clients without much trouble and dynamic client proxy generation please continue reading how to use the client in Nancy.Rest.Client

History

1.4.3-Beta: Removed bugs, Added StreamWithResponse class, for finetunning Stream responses, published nugets.

1.4.3-Alpha: First Release

##WARNING

THIS IS AN BETA VERSION, so far it works on my machine ;)

TODO

##MAYBE

Built With

Credits

License

This project is licensed under the MIT License - see the LICENSE.md file for details