Web api-如何使用slugs进行路由
本文关键字:路由 slugs 何使用 api- Web | 更新日期: 2023-09-27 18:00:59
我希望能够解析如下链接:
http://stackoverflow.com/questions/31223512/web-api-how-to-route-using-slugs
因此,在服务器上简单地路由,忽略URL的最后一部分。举个例子,使用这个问题,如果有人输入这样的URL,我如何正确实现路由,它会将我重定向到:
http://stackoverflow.com/questions/31223512
引用:处理URL模式中的可变段数
有时您必须处理包含变量的URL请求URL段的数目。定义管线时,可以指定如果一个URL的分段数多于模式中的分段数,则额外的分段被认为是最后一个分段的一部分。处理通过这种方式,您可以使用星号(*(。这被称为catch-all参数。一条路线使用catch-all参数还将匹配不包含的URL最后一个参数的任何值。
基于约定的路线可以映射为…
config.Routes.MapHttpRoute(
name: "QuestionsRoute",
routeTemplate: "questions/{id}/{*slug}",
defaults: new { controller = "Questions", action = "GetQuestion", slug = RouteParameter.Optional }
);
或者,使用属性路由,路由可能看起来像。。。
[Route("questions/{id:int}/{*slug?}")]
其可以与示例控制器动作相匹配。。。
public IActionResult GetQuestion(int id, string slug = null) {...}
示例URL。。。
"questions/31223512/web-api-how-to-route-using-slugs"
然后将参数匹配如下。。。
id = 31223512
slug = "web-api-how-to-route-using-slugs"
由于slug
是可选的,上述URL仍将与匹配
"questions/31223512"
这应该符合您的要求。