将用户定义类的实例作为数据传递给ServiceStack PUT

本文关键字:数据 PUT ServiceStack 定义 用户 实例 | 更新日期: 2023-09-27 18:16:00

我对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等)才会越界

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

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

将用户定义类的实例作为数据传递给ServiceStack PUT

在与同事讨论后,我终于弄明白了。为了大家的利益,以下是我所做的:

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

var updatedUser = self.buildUserObjectFromGui();
$.ajax({
    type: 'PUT',
    contentType: "application/json",
    data: JSON.stringify(updatedUser),
    url: 'internal/user/' + this.options.userId
});