【发布时间】:2013-01-02 11:51:17
【问题描述】:
以前,我有两种方法,一种用[WebGet] 标记,另一种用[WebInvoke(Method = "POST"] 标记
当我对我指定的 URL 执行 GET 或 POST 时,它总是会调用正确的方法。
网址是:
POST: fish-length
GET: fish-length?start-date={startDate}&pondId={pondId}
现在我正在使用 web api,我必须单独定义我的路由,如下所示:
RouteTable.Routes.MapHttpRoute(
name: "AddFishLength",
routeTemplate: "fish-length",
defaults: new
{
controller = "FishApi",
action = "AddFishLength"
});
RouteTable.Routes.MapHttpRoute(
name: "GetFishLength",
routeTemplate: "fish-length?start-date={startDate}&pondId={pondId}",
defaults: new
{
controller = "FishApi",
action = "GetFishLength"
});
但是第二条路线不起作用,因为您不允许在 routeTemplate 中使用 ?。
我可以将 URL 格式更改为 fish-length/{startDate}/{pondId} 之类的格式,但这确实不是公开服务的好方法。
有没有更好的方法来做到这一点?另外因为我之前对同一个 url 进行了 POST 和 GET,所以我需要确保我的路由方法仍然允许这样做。假设上述方法有效,我仍然不确定它如何正确路由。
【问题讨论】:
标签: asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing