ServiceStack击中了错误的http动词

时间:2013-04-17 10:20:48

标签: servicestack httpverbs

当尝试执行POST请求Delete(SourceInfo sourceInfo)而不是Post(SourceInfo sourceInfo)时,如果我删除Delete(SourceInfo sourceInfo),则在执行POST请求时执行Put(SourceInfo sourceInfo)。我很确定我做错了什么,但我无法弄清楚它是什么。

使用IPlugin界面来确定路由。

public void Register(IAppHost appHost)
{
    appHost.Routes.Add<SourceInfo>("/sources", "GET,POST,PUT");
    appHost.Routes.Add<SourceInfo>("/sources/{Name}", "GET,DELETE");
}

服务看起来像这样

public class SourceService : ServiceStack.ServiceInterface.Service
{    
    public SourceInfoResponse Get(SourceInfo sourceInfo)
    { ... }

    public bool Post(SourceInfo source)
    { ... }

    public bool Put(SourceInfo source)
    { ... }

    public bool Delete(SourceInfo source)
    { ... }
}

我在这里查看了新api设计的路由描述:https://github.com/ServiceStack/ServiceStack/wiki/New-API,但在这种情况下看起来不适用。

1 个答案:

答案 0 :(得分:1)

所以我发现了,事实证明返回bool不起作用。当我将返回类型更改为object时,它立即起作用。

像这样

public class SourceService : ServiceStack.ServiceInterface.Service
{    
    public SourceInfoResponse Get(SourceInfo sourceInfo)
    { ... }

    public object Post(SourceInfo source)
    { ... }

    public object Put(SourceInfo source)
    { ... }

    public object Delete(SourceInfo source)
    { ... }
}

它也可以返回自定义类。