我使用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)
{ ... }
答案 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。