gpt4 book ai didi

c# - 基于查询字符串参数名的路由

转载 作者:IT王子 更新时间:2023-10-29 04:21:46 24 4
gpt4 key购买 nike

我正在尝试在我的 MVC4 WebAPI 项目中配置路由。

我希望能够像这样根据名称或类型搜索产品:

/api/products?name=WidgetX - 返回所有名为 WidgetX 的产品/api/products?type=gadget - 返回类型为 gadget 的所有产品

路由配置如下:

config.Routes.MapHttpRoute(
name: "Get by name",
routeTemplate: "api/products/{name}",
defaults: new { controller = "ProductSearchApi", action = "GetProductsByName", name = string.Empty }
);

config.Routes.MapHttpRoute(
name: "Get by type",
routeTemplate: "api/products/{type}",
defaults: new { controller = "ProductSearchApi", action = "GetProductsByType", type = string.Empty }
);

问题是查询字符串参数的名称似乎被忽略了,所以第一个路由总是被使用,不管查询字符串参数的名称是什么。我怎样才能修改我的路线以使其正确?

最佳答案

你需要的只是下面的一条路由,因为查询字符串没有被用作路由参数:

config.Routes.MapHttpRoute(
name: "Get Products",
routeTemplate: "api/products",
defaults: new { controller = "ProductSearchApi" }
);

然后,定义如下两个方法:

GetProductsByName(string name)
{}

GetProductsByType(string type)
{}

路由机制智能足以根据查询字符串的名称(是否与输入参数相同)将您的 url 路由到正确的操作。当然所有有前缀的方法都是Get

您可能需要阅读以下内容: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection

关于c# - 基于查询字符串参数名的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12619587/

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