LocationsController 中的 WebApi 方法:
public async Task<IHttpActionResult> GetLocations(int id, long start, long end)
{
return Ok();
}
我尝试调用的电话 (GET):
https://api.com/Locations/GetLocations/34934/1/1
https://api.com/Locations/GetLocations?34934&start=1&end=1
因此:
factHttp.httpRequest('/locations/GetLocations', 'GET', vm.ID + '/' + start.getTime() + '/' + now.getTime()).then(function (_result) {
vm.plots = angular.fromJson(_result.data);
});
var _httpRequest = function requestCall(requestPartURL, requestType, requestPayload) {
var _resultHttp = $http({
url: apiURL + requestPartURL,
method: requestType,
data: requestPayload,
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('ACCESS_TOKEN')
}
}).success(function (response) {
console.log("HTTP CALL SUCCESS");
return {
result: 'SUCCESS',
resultObj: response,
errorCode: '',
errorDesc: ''
}
}).error(function (response) {
console.log("HTTP CALL FAIL");
console.log(response);
return getErrorObj(response);
});
return _resultHttp;
}
路由:
config.Routes.MapHttpRoute(
"IdentWithRange",
"{controller}/{action}/{id}/{start}/{end}"
);
如果我将 Web api 方法更改为仅采用 (int id) 并调用 GetLocation/34934,它就可以正常工作。我在这里做错了什么?
我不断收到 404 错误。其中一些内容不是我自己写的(即 JS 的东西,因为我不擅长),但对我来说这是第一次使用任何类型的 api,我控制两端,我有点卡住了。 p>
最佳答案
您创建的路由记录将寻找以下路由
/api/controller/id/start/end
但是您正在尝试传递参数,而不是指定路线。
您不需要特殊的路由记录来处理多个参数。使用“标准”路由记录就足够了。
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new
{
id = RouteParameter.Optional, action = "DefaultAction"
});
关于javascript - 带参数的 WebApi 404 - 通过 javascript GET 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891107/