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

Sending array of string from postman client

我正在使用 identity 2.0 网络 api。 我想为一个用户分配多个角色。 我正在使用 post 手动客户端与 Web api 进行通信。 在 api 中,我用来获取用户 ID 和用户角色的方法如下:

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

这里selectedRoles是一个数组。 来自 postman 客户端,我正在传递数组,如下所示:

我在 url 中传递用户 ID。 我是否以正确的格式从 postman 客户端传递角色数组? 对 api 的调用成功,但 selectedRoles 始终包含空值。 我尝试使用原始 json 如下所示,但它没有用

如果我可以将角色作为原始 json 传递,是否可以显示示例

第一个问题:您指定 selectedRoles 数组来自具有此属性的 URI (URL):[FromUri]。您需要删除此属性,因为您是在请求 body 中发送它,而不是在 URL.

中发送

Web API 操作只能接收来自请求 body 的单个参数,以及来自 URL 的任意数量的参数。因此,您需要将 userid 参数作为查询字符串参数传递,例如 ?userid=123123,以及 body 中的另一个参数。 (如果您使用默认路线)

您还需要在 header 中指定您在 body 中发送的信息的格式。所以你需要包括这个 header: Content-Type: application/json,因为你在你的请求 body.

中包括了 JSON

最后,当您从 body 发送单个参数时,您可以这样发送:

['Admin', 'Employee']

如果您想在您的示例中使用该格式,您应该创建一个 class 作为您的操作中的参数,它看起来像这样:

public class RoleList
{
   public string[] selectedRoles { get; set; }
}

你的操作应该包括这个作为参数:

public async Task<IHttpActionResult> 
     AddRoleToUser(string userid, RoleList roleList)

C# 中的方法代码:

    public void Put([FromBody]string[] selectedRoles)
    {
        foreach (var role in selectedRoles)
        {

        }
    }

在postman中调用方法

在标题选项卡中添加您的参数和 Content-type 参数值为 application/x-www-form-urlencoded

在 body 选项卡中 select rawJSON(application/json) 然后在 body 框中添加您的数组,如下所示: ['Admin', 'Employee']