2

一般来说,我对 ServiceStack 和 RESTful 服务比较陌生,我遇到了以下障碍:

我有一个类似于以下内容的 ServiceStack 请求对象(在 C# 中):

[Authenticate]
[Route("/product", "POST")]
[Route("/product/{productId}", "GET,PUT,DELETE")]
public class SomeProductRequest: IReturn<Dto.Product>
{
    public int ProductId{ get; set; } 
    public ProductStuff SomeProductProperties { get; set; }
}

我可以在客户端用 Javascript 构建对象,为 PUT 做准备,如下所示:

var product = {
  productId: 100,
  someProductProperties: { id:5, name:"My Name" }
};

但是,每当请求到达服务器时,SomeProductProperties总是null. 事实上,我根本无法将用户定义的类型传递给服务器。只有基本的、内置的 .NET 类型似乎可以通过网络(int、string 等)

在请求对象中拥有用户定义类的属性是否有一些技巧?

非常感谢所有帮助!谢谢!

4

1 回答 1

1

和同事商量后终于搞定了。为了其他人的利益,这是我所做的:

当通过网络发送复杂类型时,您需要包装包含复杂类型的 js 对象,JSON.stringify()并改为传递结果字符串:

var updatedUser = self.buildUserObjectFromGui();
$.ajax({
    type: 'PUT',
    contentType: "application/json",
    data: JSON.stringify(updatedUser),
    url: 'internal/user/' + this.options.userId
});
于 2013-05-29T18:17:29.313 回答