我希望请求的网址为/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请求,但我可以添加Accept
和Content-Type
标头,甚至可以添加?format=json
查询字符串。
P.S。我正在使用BSD版本的ServiceStack
答案 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服务客户端也可以访问它们,并且能够使用你的自定义路由而不是回退到预定义的路由。