我对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等)
在请求对象中使用用户定义的类的属性是否有一些技巧?
非常感谢所有帮助! 谢谢!
答案 0 :(得分:1)
在与同事讨论后结束了解决这个问题。为了其他人的利益,这就是我所做的:
在线路上发送复杂类型时,需要使用JSON.stringify()
包装包含复杂类型的js对象,并传递生成的字符串:
var updatedUser = self.buildUserObjectFromGui();
$.ajax({
type: 'PUT',
contentType: "application/json",
data: JSON.stringify(updatedUser),
url: 'internal/user/' + this.options.userId
});