问题使用GET将Javascript Array发送到Web API方法

时间:2014-03-26 10:41:13

标签: c# angularjs post asp.net-web-api get

我使用AngularJS $ http将数据发送到我的Web API服务器。如果我使用GET方法,则数组在服务器上将为null。 使用POST方法一切正常。使用GET方法发送数组的正确方法是什么?

---- ---- GET

客户端:

     $http({
       method: 'GET',
       url: '/api/Status',
       headers: { 'Authorization': $localStorage.accesstoken },
       data: statusID
     })

服务器端:

    [HttpGet]
    public async Task<List<StatusForUpdate>> GetStatus([FromUri] List<int> StatusID)
    { ... }

---- ---- POST

客户端:

     $http({
       method: 'POST',
       url: '/api/Status',
       headers: { 'Authorization': $localStorage.accesstoken },
       data: statusID
     })

服务器端:

    [HttpPost]
    public async Task<List<StatusForUpdate>> GetStatus(List<int> StatusID)
    { ... }

1 个答案:

答案 0 :(得分:0)

首先,使用data使用GET不正确,请改用<{1}}

不幸的是,使用此代码:

params

Angular会发送一个这样的网址:http://server.com/api/Status?0=1&1=2

但该格式与web api默认预期格式不匹配,即:

http://server.com/api/Status?StatusID=1&StatusID=2

请改为尝试:

var statusID = [1, 2];
  $http({
       method: 'GET',
       url: '/api/Status',
       headers: { 'Authorization': $localStorage.accesstoken },
       params: statusID
   })

请记住将角度更新为版本&gt; = 1.2.0 ,对于版本1.0.x,网址将如下所示:

http://server.com/api/Status?StatusID=%5B1%2C2%5D

如果您使用旧的角度版本并且您还不愿意升级,只需手工您的网址即可发送到网络API。