Hi,
Is there a way to get the URL for a Route without replacing the place-holders?
For the following RequestDto I want to get: “/spaces/{spaceId}/analytics/users/{from}/{to}”
[Route("/spaces/{spaceId}/analytics/users/{from}/{to}", HttpMethods.Get)]
public class GetUsersAnalyticsPage : IReturn<GetUsersAnalyticsPageResponse>
{
public long From { get; set; }
public long To { get; set; }
public int SpaceId { get; set; }
}
Thanks in advance
Carlos Mendes:
This seems to work
typeof(RequestDTOClassName).AllAttributes<RouteAttribute>()[0].Path
Carlos Mendes:
Thank you Demis.
Is there a way to get it without being in the context of a request to the Route?
I need something similar to the ToGetUrl extension method since I need to pass these ‘raw’ routes to my client side app and handle URL substitutions there.
Yeah you can get it from the IRequest:
var routePath = base.Request.GetRoute().Path;
Yeah that’s how you can query the Route attribute defined on the Request DTO, whereas req.GetRoute()
returns the Route that was matched for the current request, it’s only available on the Request and not statically.
FYI, you can also get metadata about each operation (inc Route info) with the /operations/metadata route, e.g:
http://test.servicestack.net/operations/metadata
also available in other formats, e.g JSON:
http://test.servicestack.net/operations/metadata?format=json
Carlos Mendes:
Thanks. I wasn’t aware of the operations metadata endpoint.
There’s always “one more thing” in SS
Yep no worries, it’s linked from the bottom of the metadata page under Debug Info: