gpt4 book ai didi

c# - 使用 restsharp 序列化对象并将其传递给 WebApi 而不是序列化列表

转载 作者:可可西里 更新时间:2023-11-01 08:13:57 25 4
gpt4 key购买 nike

我有一个看起来像的 View 模型。

public class StoreItemViewModel
{
public Guid ItemId { get; set; }
public List<Guid> StoreIds { get; set; }
[Required]
public string Description { get; set; }
//[Required]
//[DataMember(IsRequired = true)]
public int ItemTypeId { get; set; }


}

我有一个使用 RestSharp 的小 helper 。

public static IRestResponse Create<T>(object objectToUpdate, string apiEndPoint) where T : new()
{
var client = new RestClient(CreateBaseUrl(null))
{
Authenticator = new HttpBasicAuthenticator("user", "Password1")
};

var request = new RestRequest(apiEndPoint, Method.POST);
//request.JsonSerializer = new JsonSerializer();
// {RequestFormat = DataFormat.Json};
request.AddObject(objectToUpdate);
// clientJsonSerializer = new YourCustomSerializer();
var response = client.Execute<T>(request);
return response;
}

在我的 api 中调试 Controller 时

 [HttpPost]
public HttpResponseMessage Create([FromBody]StoreItemViewModel myProduct)
{
//check fields are valid
.........
}

myProducts 产品除了公开的 List StoreIds 之外都被填充了,它总是返回一个带有空 Guid 的单一奖励。即使我添加了 2 个或更多 StoreIds

我认为这是因为我在我的应用程序中使用我的 Create 助手做错了。

任何人都可以帮助解决这个问题。

发送到 webapi 的原始数据看起来像

ItemId=f6dbd244-e840-47e1-9d09-53cc64cd87e6&ItemTypeId=6&Description=blabla&StoreIds=d0f36ef4-28be-4d16-a2e8-37030004174a&StoreIds=f6dbd244-e840-47e1-9d09-53cc64cd87e6&StoreId=d0f36ef4-28be-4d16-a2e8-37030004174a

最佳答案

RestSharp 现在有一种更简化的方式来使用 Json 序列化将对象添加到 RestRequest Body:

public static IRestResponse Create<T>(object objectToUpdate, string apiEndPoint) where T : new()
{
var client = new RestClient(CreateBaseUrl(null))
{
Authenticator = new HttpBasicAuthenticator("user", "Password1")
};
var request = new RestRequest(apiEndPoint, Method.POST);
request.AddJsonBody(objectToUpdate); // HERE
var response = client.Execute<T>(request);
return response;
}

这是在 RestSharp 105.0.1.0 中发现的

关于c# - 使用 restsharp 序列化对象并将其传递给 WebApi 而不是序列化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com