从邮递员客户端发送字符串数组

时间:2016-03-15 09:03:05

标签: asp.net-web-api postman

我正在使用带有身份2.0的web api。 我想为用户分配多个角色。 我正在使用post man client与web api进行通信。 在api中,用于获取用户的用户ID和角色的方法如下:

public async Task<IHttpActionResult> AddRoleToUser(string userid,[FromUri] string[] selectedRoles)

这里selectedRoles是一个数组。 从邮递员客户端我传递数组如下: enter image description here

我在网址中传递用户ID。 我是否从邮递员客户端传递了正确格式的角色数组? 对api的调用是成功的,但selectedRoles总是包含空值。 我尝试使用下面给出的原始json,但它没有用

enter image description here

如果我可以将角色作为原始json传递,那么可以显示一个示例

2 个答案:

答案 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;]