我正在尝试模仿在powershell中调用webapi调用主体的c#类定义,因此我可以使用表示为json的对象调用rest方法。我想要实现的json结构的一个例子是:
'{
"Name" : "Test" ,
"Items" : [{"Key" : "Test", "Value" : "t2"},{"Key" : "Test2", "Value" : "t3"}]
}'
当json在postman中设置为其余调用的主体时,如果我用powershell调用powershell invokerest-method,所有字段在webapi端都是null。
这是我目前在powershell中对此进行的尝试,注意,Items实际上是一个键值对象列表。使用下面的代码,我只在项目中获得1项,其名称和值为空。
$spec = @{
Name = 'Test'
Items = ,{Name = 'Test', Value = 't2'}, {Name = 'Test2', Value = 't3'}
}
invoke-restmethod $someurl -Method:POST -body $spec | Write-Host
我很确定我在powershell对象上的项目数组声明中遗漏了一些重要内容。
以下是其他方法:
[HttpPost]
[Route("addorupdateitem")]
public void Add([FromBody] ItemConfigurationDto itemconfig)
{
var serializeObject = Newtonsoft.Json.JsonConvert.SerializeObject(context);
Debug.WriteLine(serializeObject);
}
和对象
public class ItemConfigurationDto
{
public string Name { get; set; }
public List<Item> Items { get; set; } = new List<Item>();
}
public class Item
{
public string Name { get; set; }
public string Value { get; set; }
}
答案 0 :(得分:2)
修正了问题。我必须设置-ContentType'application / json'并将对象转换为json,然后再将其添加到正文中。