将用户定义类的实例作为数据传递给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等)才会越界
在请求对象中拥有用户定义类的属性是否有一些技巧?
非常感谢所有的帮助!谢谢!
在与同事讨论后,我终于弄明白了。为了大家的利益,以下是我所做的:
当通过网络发送一个复杂类型时,你需要使用JSON.stringify()
来包装包含复杂类型的js对象,并传递结果字符串:
var updatedUser = self.buildUserObjectFromGui();
$.ajax({
type: 'PUT',
contentType: "application/json",
data: JSON.stringify(updatedUser),
url: 'internal/user/' + this.options.userId
});