Compass.NET
1.0.0-preview3
See the version list below for details.
dotnet add package Compass.NET --version 1.0.0-preview3
NuGet\Install-Package Compass.NET -Version 1.0.0-preview3
<PackageReference Include="Compass.NET" Version="1.0.0-preview3" />
paket add Compass.NET --version 1.0.0-preview3
#r "nuget: Compass.NET, 1.0.0-preview3"
// Install Compass.NET as a Cake Addin #addin nuget:?package=Compass.NET&version=1.0.0-preview3&prerelease // Install Compass.NET as a Cake Tool #tool nuget:?package=Compass.NET&version=1.0.0-preview3&prerelease
Compass.NET
Simple HTTP request router for .NET backends
This documentation refers the PREVIEW version of this library so the API is subject to change
How to use
This library comes with an extremely simple API set (consits of a few methods only)
Register the known routes
using System.Net; using Solti.Utils.Router; RouterBuilder routerBuilder = new ( // This handler is called on every unknown routes defaultHandler: (object? state) => { HttpListenerContext ctx = (HttpListenerContext) state; ... }, // can be omitted converters: DefaultConverters.Instance ); routerBuilder.AddRoute ( // A route may contain parameter(s) route: "/get/picture-{id:int}", handler: (IReadOnlyDictionary<string, object?> paramz, object? state) => { HttpListenerContext ctx = (HttpListenerContext) state; int id = (int) paramz["id"]; ... }, // "GET" is the default "GET", "OPTIONS" );
A valid route looks like
[/]segment1/[prefix]{paramName:converter[:style]}[suffix]/segment3[/]
Build the router delegate and start the HTTP backend
Router route = routerBuilder.Build(); HttpListener listener = new HttpListener(); listener.Prefixes.Add("http://localhost:8080/"); listener.Start(); ... while (Listener.IsListening) // probably this will run in a separate thread { HttpListenerContext context = Listener.GetContext(); route(context, context.Request.Url!.AbsolutePath, context.Request.HttpMethod); }
For a more comprehensive example check out the use cases fixture
Converters
Converters are used to parse variable value coming from the request path. Default converters (int
, guid
, str
and enum
) can be accessed via the DefaultConverters.Instance
property.
using Solti.Utils.Router;
RouterBuilder routerBuilder = new
(
defaultHandler: (object? state) => {...},
converters: new Dictionary<string, ConverterFactory>(DefaultConverters.Instance)
{
{"mytype", (string? style) => new MyConverter(style)}
}
);
class MyTypeConverter: IConverter
{
...
}
Resources
Supported frameworks
This project currently targets .NET Standard 2.1 only.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Solti.Utils.Primitives (>= 8.0.0)
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 |
---|---|---|
6.0.1 | 77 | 8/4/2024 |
6.0.0 | 74 | 8/4/2024 |
5.0.5 | 109 | 5/22/2024 |
5.0.4 | 130 | 2/23/2024 |
5.0.3 | 120 | 2/8/2024 |
5.0.2 | 101 | 2/8/2024 |
5.0.1 | 109 | 2/8/2024 |
5.0.0 | 116 | 1/31/2024 |
4.0.3 | 117 | 1/25/2024 |
4.0.2 | 104 | 1/25/2024 |
4.0.1 | 104 | 1/23/2024 |
4.0.0 | 107 | 1/23/2024 |
3.0.0 | 162 | 1/9/2024 |
3.0.0-preview1 | 118 | 1/8/2024 |
2.0.1 | 160 | 12/29/2023 |
2.0.0 | 214 | 10/16/2023 |
1.2.1 | 142 | 9/18/2023 |
1.2.0 | 138 | 9/17/2023 |
1.1.1 | 127 | 9/15/2023 |
1.1.0 | 142 | 9/15/2023 |
1.0.0 | 147 | 9/13/2023 |
1.0.0-preview5 | 129 | 9/12/2023 |
1.0.0-preview4 | 137 | 9/5/2023 |
1.0.0-preview3 | 131 | 9/3/2023 |
1.0.0-preview2 | 124 | 8/25/2023 |
1.0.0-preview1 | 123 | 8/20/2023 |