Nancy.Rest.Module
1.4.3.7-beta
dotnet add package Nancy.Rest.Module --version 1.4.3.7-beta
NuGet\Install-Package Nancy.Rest.Module -Version 1.4.3.7-beta
<PackageReference Include="Nancy.Rest.Module" Version="1.4.3.7-beta" />
paket add Nancy.Rest.Module --version 1.4.3.7-beta
#r "nuget: Nancy.Rest.Module, 1.4.3.7-beta"
// Install Nancy.Rest.Module as a Cake Addin #addin nuget:?package=Nancy.Rest.Module&version=1.4.3.7-beta&prerelease // Install Nancy.Rest.Module as a Cake Tool #tool nuget:?package=Nancy.Rest.Module&version=1.4.3.7-beta&prerelease
Nancy.Rest.Module
A Nancy Module capable of mounting an annotated interface and provides transversal filtering capabilities.
Installation
- Add Nancy, Nancy.Rest.Module and Nancy.Rest.Annotations to your server project.
Or
- Add the Nuget package Nancy.Rest.Module
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:
- RestBasePath - The default path using to mount the module in Nancy.
- Rest - Here you can add the route path, the verb, and optionally the response content-type in case of streams.
- Level - For transversal serialization, when a client sent the level={number} as a query parameter, any property in the models with level bigger than the one asked by the client, will be not sent to the client.
- Tag - For transversal serialization, when a client sent the excludetags={comma_separated_tags) as a query parameter, any property in the model with the tags included will be not serialized and sent back to the client.
- Ignore - The property will be not serialized and sent back to the client.
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
- Claim/Role based transversal filtering
- Swagger!
- Squash Bugs
- Squash More Bugs
- Pray
- Change Bugs issues to features
- TODO 😛
##MAYBE
- Added secure module and secure client, wrapping request and responses models with signatures.
Built With
Credits
- Maximo Piva - maxpiva
License
This project is licensed under the MIT License - see the LICENSE.md file for details
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net452 is compatible. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
- Nancy (>= 1.4.3 && < 2.0.0)
- Nancy.Rest.Annotations (>= 1.4.3.7-beta && < 2.0.0)
- Newtonsoft.Json (>= 10.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.4.3.7-beta | 2,347 | 10/3/2017 |