在我的web api中,我创建了这个控制器:
public class DistributionGroupController : ApiController
{
[HttpGet]
public ServiceResult Index(string id)
{
if (id == null)
return null;
else
return new ServiceResult();
}
}
另外,这是我的路线配置。我正在为我的通讯组路由指定我的默认操作为"索引":
routes.MapHttpRoute(
"Api action",
"Api/{controller}/{action}"
);
routes.MapHttpRoute(
"Api get",
"Api/{controller}"
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
/*This is the route in question*/
routes.MapHttpRoute(
"DistGroupRoute",
"api/distributiongroup/{id}/{action}",
new { controller = "DistributionGroup", action = "Index" }
);
在我看来,我正在使用这个脚本(尝试)击中我的控制器:
$.ajax({
url: "api/distributiongroup/4567bn57n5754",
cache: false,
success: function (response) {
alert('success');
}
});
但是我的ajax调用收到404 Not Found
错误。但是,如果我从我的ajax调用中将index
附加到我的网址,我的控制器就会被点击。所以,实质上,这是不工作:
api/distributiongroup/4567bn57n5754
但确实有效:
api/distributiongroup/4567bn57n5754/index
我的理解是,如果我没有在我的网址中指定我的操作,我的默认操作就会受到影响。我可能会在这里失踪什么?而且,更重要的是,当我使用这样的网址时,如何让我的Index
控制器受到攻击:
api/distributiongroup/4567bn57n5754
(未指定Index
操作?
答案 0 :(得分:0)
routes.MapHttpRoute(
"DistGroupRoute",
"api/distributiongroup/{id}",
new { controller = "DistributionGroup", action = "Index" }
);
而不是:
routes.MapHttpRoute(
"DistGroupRoute",
"api/distributiongroup/{id}/{action}",
new { controller = "DistributionGroup", action = "Index" }
);
无需在路线模板中添加 {action} ,因为您已将其添加到默认对象中。
基本上,你说:
每当有与此路由模板匹配的网址(api/distributiongroup/{id}/{action}
)时,触发Index
控制器中的DistributionGroup
操作并传递id
参数。
答案 1 :(得分:0)
这是因为我在路由配置中指定路由的顺序。我按此顺序指定它们:
{controller}/{action}/{id}
似乎这条路线(我的默认路线):
distributiongroups
当我没有在我的网址中指定index
时,覆盖了我的distributiongroup
路线。我还不完全确定为什么会这样。但重新订购我的路线配置修复它。我只需要将 routes.MapHttpRoute(
"DistGroupRoute",
"api/distributiongroup/{id}/{action}",
new { controller = "DistributionGroup", action = "Index" }
);
routes.MapHttpRoute(
"Api action",
"Api/{controller}/{action}"
);
routes.MapHttpRoute(
"Api get",
"Api/{controller}"
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
路由放在默认路由之前:
G_x = np.array([[1,0,-1], [2,0,-2], [1,0,-1]]) //Gx
G_y = np.array([[1,2,1], [0,0,0], [-1,-2,-1]]) //Gy
Gx = sg.convolve2d(f, G_x, "same", "symm") //f is a loaded image
Gy = sg.convolve2d(f, G_y, "same", "symm")
magnitude = np.sqrt(Gx**2 + Gy**2)