HttpMethod
This commit is contained in:
parent
2b5d6b6a54
commit
1eb208cba3
@ -2,7 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!--package info-->
|
<!--package info-->
|
||||||
<PackageId>DTLib.Web</PackageId>
|
<PackageId>DTLib.Web</PackageId>
|
||||||
<Version>1.1.2</Version>
|
<Version>1.2.0</Version>
|
||||||
<Authors>Timerix</Authors>
|
<Authors>Timerix</Authors>
|
||||||
<Description>HTTP Server with simple routing</Description>
|
<Description>HTTP Server with simple routing</Description>
|
||||||
<RepositoryType>GIT</RepositoryType>
|
<RepositoryType>GIT</RepositoryType>
|
||||||
|
|||||||
15
DTLib.Web/HttpMethod.cs
Normal file
15
DTLib.Web/HttpMethod.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace DTLib.Web;
|
||||||
|
|
||||||
|
/// <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods"/>
|
||||||
|
public enum HttpMethod
|
||||||
|
{
|
||||||
|
GET,
|
||||||
|
POST,
|
||||||
|
PUT,
|
||||||
|
DELETE,
|
||||||
|
PATCH,
|
||||||
|
HEAD,
|
||||||
|
OPTIONS,
|
||||||
|
TRACE,
|
||||||
|
CONNECT
|
||||||
|
}
|
||||||
@ -3,9 +3,9 @@ namespace DTLib.Web.Routes;
|
|||||||
public class SimpleRouter : IRouter
|
public class SimpleRouter : IRouter
|
||||||
{
|
{
|
||||||
/// route for base url
|
/// route for base url
|
||||||
public RouteHandler? HomePageRoute = null;
|
public RouteHandler? HomePageRoute { get; set; }
|
||||||
/// route for any url that doesn't have its own handler
|
/// route for any url that doesn't have its own handler
|
||||||
public RouteHandler? DefaultRoute = null;
|
public RouteHandler? DefaultRoute { get; set; }
|
||||||
|
|
||||||
|
|
||||||
private readonly Dictionary<string, RouteHandler> _routes = new();
|
private readonly Dictionary<string, RouteHandler> _routes = new();
|
||||||
@ -15,12 +15,11 @@ public class SimpleRouter : IRouter
|
|||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void MapRoute(string url, Func<HttpListenerContext, Task<HttpStatusCode>> route)
|
public void MapRoute(string url, HttpMethod method, RouteHandler route) => _routes.Add($"{url}:{method}", route);
|
||||||
=> MapRoute(url, new DelegateRouteHandler(route));
|
|
||||||
|
|
||||||
public void MapRoute(string url, RouteHandler route) => _routes.Add(url, route);
|
public void MapRoute(string url, HttpMethod method, Func<HttpListenerContext, Task<HttpStatusCode>> route)
|
||||||
|
=> MapRoute(url, method, new DelegateRouteHandler(route));
|
||||||
|
|
||||||
public async Task<HttpStatusCode> Resolve(HttpListenerContext ctx)
|
public async Task<HttpStatusCode> Resolve(HttpListenerContext ctx)
|
||||||
{
|
{
|
||||||
@ -28,9 +27,8 @@ public class SimpleRouter : IRouter
|
|||||||
RouteHandler? route;
|
RouteHandler? route;
|
||||||
if(HomePageRoute != null && requestPath == "/")
|
if(HomePageRoute != null && requestPath == "/")
|
||||||
route = HomePageRoute;
|
route = HomePageRoute;
|
||||||
else if (_routes.TryGetValue(requestPath, out var routeDelegate))
|
else if (!_routes.TryGetValue($"{requestPath}:{ctx.Request.HttpMethod}", out route))
|
||||||
route = routeDelegate;
|
route = DefaultRoute;
|
||||||
else route = DefaultRoute;
|
|
||||||
|
|
||||||
HttpStatusCode status;
|
HttpStatusCode status;
|
||||||
if (route == null)
|
if (route == null)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user