有没有办法删除" / json / reply /"网址的一部分?

时间:2016-06-02 22:21:28

标签: servicestack-bsd

我希望请求的网址为/AmazingRequest(甚至是/AmazingService),而不是/json/reply/AmazingRequest

我已尝试Route属性,但似乎没有效果。是否可以在ServiceStack中使用,或者我是否必须使用URL重写?

这是我尝试过的。它编译,但属性没有效果。

public class MyServiceEndpoints : IService
{
    [Route("/AmazingService")]
    public AmazingResponse Post(AmazingRequest request)
    {
        return new Amazing(request).GetResponse();
    }
}

我意识到我需要告诉ServiceStack它是一个json请求,但我可以添加AcceptContent-Type标头,甚至可以添加?format=json查询字符串。

P.S。我正在使用BSD版本的ServiceStack

1 个答案:

答案 0 :(得分:1)

在ServiceStack中,路由在请求DTO上定义为服务合同的一部分,例如:

[Route("/AmazingService")]
public class AmazingRequest { ... }

您使用的pre-defined Route是因为ServiceStack认为没有为您的服务定义任何自定义路由,只使用默认路由。

声明路由的另一种方法是在AppHost中使用Fluent Registration API,例如:

public void Configure(Container container)
{
    Routes
      .Add<AmazingRequest>("/AmazingService");
}

但是在Request DTO上定义它们的好处是你的.NET服务客户端也可以访问它们,并且能够使用你的自定义路由而不是回退到预定义的路由。