gpt4 book ai didi

asp.net-mvc - WebApi 操作路线

转载 作者:行者123 更新时间:2023-12-02 14:37:48 25 4
gpt4 key购买 nike

我试图支持同一 Controller 上的多个 GET 请求以执行模型上的子操作,但是我无法使路由正常工作。我正在努力支持 -

/{controller}/{id}/{action}

虽然不踩默认

/{controller}/{id}

我尝试像这样创建另一个路由配置 -

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}"
);

但是,这允许 /{controller}/{id}/{action} 处的路由,但 /{controller}/{id} 方法停止工作出现“发现多个操作”异常。

以下是我尝试公开的三种 GET 方法的示例 -

    public HttpReponseMessage GetItem() 
{

}
public HttpResponseMessage GetItem(int id)
{

}
public HttpResponseMessage GetItemMetaData(int id)
{

}

最佳答案

如果您使用的是 Web API 2,请尝试使用 Attribute Routing这使得这类情况很容易处理。如果您仍在使用 Web API 1,请查看 Attribute Routing for Web API 。如果由于某种原因您不想使用其中任何一个,您可以更详细地指定您的路线,如下所示:

// Map your specific route first.
config.Routes.MapHttpRoute(
name: "NestedApi",
routeTemplate: "api/{controller}/{id}/items",
defaults: new{action = "GetItems"}
);
// You can have other specific routes here.

// Map all other GET requests to a Get method.
config.Routes.MapHttpRoute(
name: "DefaultGetApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional, action = "Get" },
constraints: new{httpMethod = new HttpMethodConstraint(HttpMethod.Get)}
);

// Use default route for all the rest.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

关于asp.net-mvc - WebApi 操作路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com