以前,我有两种方法,一种用标记,另[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 中使用 a。
我可以将 URL 格式更改为类似的格式,fish-length/{startDate}/{pondId}
但这并不是公开服务的好方法。
有一个更好的方法吗?另外因为我之前对同一个 url 进行了 POST 和 GET,所以我需要确保我的路由方法仍然允许这样做。假设上述方法有效,我仍然不确定它如何正确路由。