Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create route for root path, '/', with ServiceStack

Tags:

servicestack

I'm trying to set a RestPath for root, '/', but its not allowing me to. Its saying RestPath '/' on Type 'MainTasks' is not Valid

Is there a way to allow this? I'd like to provide a resource from the root.

[Route("/", "GET")]
public class MainTasks : IReturn<MainTasksResponse>
{
}
like image 904
Andrew Young Avatar asked Nov 20 '12 19:11

Andrew Young


1 Answers

You can only match on the Route / Path in ServiceStack with a FallbackRoute, e.g:

[FallbackRoute("/{Path*}")]
public class Fallback
{
    public string Path { get; set; }
}

This uses a wildcard to handle every unmatched route (inc. /foo/bar). Only 1 fallback route is allowed.

There are also a few other ways to handle the default root path /:

  1. Change the EndpointHostConfig.DefaultRedirectPath to redirect to the service you wish to use
  2. Add a default.cshtml Razor or Markdown View or static default.htm (for HTML requests)
  3. Register a EndpointHostConfig.RawHttpHandlers - This is the first handler looked at in ServiceStack's Order of Operations.
  4. Register a IAppHost.CatchAllHandlers - This gets called for un-matched requests.
  5. Handle the request in a Global Request Filter
like image 145
mythz Avatar answered Oct 09 '22 00:10

mythz