2013-04-17 39 views
1

当试图执行一个POST请求Delete(SourceInfo sourceInfo)执行,而不是Post(SourceInfo sourceInfo),如果我删除Delete(SourceInfo sourceInfo)然后Put(SourceInfo sourceInfo)正在执行POST请求时执行。我很确定我做错了什么,但我无法弄清楚它是什么。ServiceStack击中了错误的HTTP动词

使用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,但不像这适用于这种情况。

+0

你用什么客户端/工具(Fiddler,ServiceStack客户端,ajax post等)来提出请求?此示例https://gist.github.com/paaschpa/5405028似乎使用Fiddler来POST到本地主机/源 – paaschpa

+0

我正在使用ServiceStack客户端和[邮递员 - REST客户端](https://chrome.google.com /网站商铺/细节/邮差静止的客户端/ fdmmgilgnpjigdojojpjoooidkmcomcm?utm_source =铬-NTP-图标) –

回答

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) 
    { ... } 
} 

它也可以返回一个自定义类。