WebApi 404的参数 - 通过javascript GET调用

时间:2015-11-24 10:24:59

标签: javascript c# parameters routing asp.net-web-api

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方法改为take(int id)并调用GetLocation / 34934就可以了。我在这做错了什么?

我不断收到404错误。其中一些不是由我自己编写的(即JS的东西,因为我很擅长),但它是第一次使用任何类型的api,我控制两端,我有点卡住。

2 个答案:

答案 0 :(得分:1)

您创建的路由记录将寻找以下路由

/api/controller/id/start/end

但您尝试传入参数,而不是指定路线。

您不需要特殊的路由记录来处理多个参数。使用&#39;标准&#39;路由记录就足够了。

config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new 
{ 
  id = RouteParameter.Optional, action = "DefaultAction" 
});

答案 1 :(得分:1)

目前您需要添加&#34; api&#34;到你的路线。

_ZN12thenamespace9classname10membernameEv

推荐:

https://api.com/api/Locations/GetLocations/34934/1/1