我有一个我建立的博客。它在c#.NET中使用web api。
如果您点击此处:http://www.judsondesigns.com/api/blogapi/17
您将看到它从服务器返回一个条目。如何轻松地重写网址以使用博客标题而不是ID?
因此,您可以通过以下方式访问它:http://www.judsondesigns.com/api/blogapi/my_blog_tite_here
我在linux上用isapi重写了这个,但是在.NET中并不清楚如何。我听过不同的方式,但希望这里的方法越少越好。提前致谢。 -Judson
答案 0 :(得分:3)
您要做的是创建自定义RouteBase
。 This code review post是一个很好的起点。
它的主旨是:
public class MyRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
// parse url and turn into route
}
public override VirtualPathData GetVirtualPath(
RequestContext requestContext,
RouteValueDictionary values)
{
// create url from route
}
}
然后您将其与任何其他路线一起注册,例如
routes.Add(new MyRoute());
答案 1 :(得分:1)
通过编辑路线配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{blogTitle}",
defaults: new { controller = "Home", action = "Index", blogTitle = UrlParameter.Optional }
);
}
}
或重写操作以使用名称而不是使用命名参数 http://www.judsondesigns.com/api/blogapi/?blogtitle=my_blog_tite_here