我正在使用带有身份2.0的web api。 我想为用户分配多个角色。 我正在使用post man client与web api进行通信。 在api中,用于获取用户的用户ID和角色的方法如下:
public async Task<IHttpActionResult> AddRoleToUser(string userid,[FromUri] string[] selectedRoles)
这里selectedRoles是一个数组。 从邮递员客户端我传递数组如下:
我在网址中传递用户ID。 我是否从邮递员客户端传递了正确格式的角色数组? 对api的调用是成功的,但selectedRoles总是包含空值。 我尝试使用下面给出的原始json,但它没有用
如果我可以将角色作为原始json传递,那么可以显示一个示例
答案 0 :(得分:2)
第一个问题:您使用此属性指定>>> [b[i-1] for i in a if i % 4 == 0 and i != 1]
['d', 'h', 'l']
数组来自URI(URL):selectedRoles
。您需要删除此属性,因为您要在请求正文中而不是在网址中发送该属性。
Web API操作只能从请求正文接收单个参数,并从URL接收任意数量的参数。因此,您需要将[FromUri]
参数作为查询字符串参数传递,如此userid
,以及正文中的其他参数。 (您还可以创建包含?userid=123123
的路线,或者将userid
作为userid
参数接收,并将其作为网址段传递,如果您使用的是deafult路线)
您还需要在标题中指定您在正文中发送的信息的格式。因此,您需要包含此标头:id
,因为您在请求正文中包含了JSON。
最后,当您从正文中发送单个参数时,您可以像这样发送:
Content-Type: application/json
如果你想在你的例子中使用这种格式,你应该创建一个在你的动作中用作参数的类,如下所示:
['Admin', 'Employee']
您的操作应将此参数包括在内:
public class RoleList
{
public string[] selectedRoles { get; set; }
}
答案 1 :(得分:2)
C#中的方法代码:
public void Put([FromBody]string[] selectedRoles)
{
foreach (var role in selectedRoles)
{
}
}
在邮递员中调用方法
标题选项卡中的添加您的参数和内容类型参数,其值为 application / x-www-form-urlencoded
在正文标签中选择原始和 JSON(application / json) 然后在body box中添加你的数组如下: [&#39;管理员&#39;,&#39;员工&#39;]