【问题标题】:Sending array of string from postman client从邮递员客户端发送字符串数组
【发布时间】:2016-06-30 14:52:44
【问题描述】:

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

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

这里 selectedRoles 是一个数组。 从邮递员客户端我传递数组,如下所示:

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

如果我可以将角色作为原始 json 传递,可以举个例子

【问题讨论】:

    标签: asp.net-web-api postman


    【解决方案1】:

    C#中的方法代码:

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

    在邮递员中调用方法

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

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

    【讨论】:

      【解决方案2】:

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

      Web API 操作只能接收来自请求正文的单个参数,以及来自 URL 的任意数量的参数。所以你需要将userid参数作为查询字符串参数传递,像这样?userid=123123,以及body中的另一个参数。 (您也可以创建一个包含userid 的路由,或者接收userid 作为id 参数并将其作为URL 段传递,如果您使用的是默认路由)

      您还需要在标题中指定您在正文中发送的信息的格式。因此,您需要包含此标头:Content-Type: application/json,因为您在请求正文中包含 JSON。

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

      ['Admin', 'Employee']
      

      如果你想在你的例子中使用这种格式,你应该创建一个类作为你的动作的参数,它看起来像这样:

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

      你的动作应该包含这个作为参数:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        • 2023-02-20
        • 2022-12-06
        相关资源
        最近更新 更多