在ServiceStack的OnDelete上,调用它但值为空。
我试图检查这个值,例如
ProductRequestResponse rx = Client.Send<ProductRequestResponse>(
"DELETE", "http://localhost:2012/api/product_request",
new ProductRequest { Id = 7 });
在ServiceStack方面,我只收到一个Id为0.这是我的StackService OnDelete方法。
public override object OnDelete(ProductRequest request)
{
throw new Exception("Id: " + request.Id.ToString());
}
这是我的对象用于通信
public class ProductRequest
{
public int Id { get; set; }
public ProductDto ProductDto { get; set; }
}
public class ProductRequestResponse
{
public ProductDto ProductDto { get; set; }
public IEnumerable<ProductDto> ProductDtos { get; set; }
public ServiceStack.ServiceInterface.ServiceModel.ResponseStatus ResponseStatus { get; set; } //Where Exceptions get auto-serialized
}
我缺少什么,为什么StackService没有从OnDelete方法接收任何值?
答案 0 :(得分:1)
首先,您应该使用Delete方法,因为Send
仅执行POST:
所以它看起来像:
restClient.Delete<TransactionLogResponse>("/transactionlog");
Delete之所以不期望Request DTO是因为DELETE Http动词不接受请求体。
如果要添加参数,则应在路径路径或查询字符串中添加它,例如:
restClient.Delete<TransactionLogResponse>("/transactionlog/1?Arg1=a&Arg2=b");