PHP7新特性介紹
阿新 • • 發佈:2022-05-03
配置路由傳參
Startup類的Configure方法裡預設的路由中介軟體
配置傳遞引數
只需要在後面接變數名即可
在傳遞的時候也是通過路由傳參
後臺伺服器安裝引數名接收即可
偽靜態頁面
偽靜態頁面:看上去是靜態頁面,但其實是動態頁面(路由偽造),對seo優化有一定幫助,一些搜尋引擎對靜態頁收錄會搞一些。
自定義中介軟體來實現一個路由
app.Use(next => async context => { if (context.Request.Path == "/") { context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼 await context.Response.WriteAsync("這是一個新頁面"); return; } await next(context); });
如:
自定義中介軟體來實現偽靜態頁面
app.Use(next => async context => { if (context.Request.Path == "/home/about") { context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼 await context.Response.WriteAsync("關於我們頁面"); return; } if (context.Request.Path == "/home/about.html")//偽靜態 { context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼 await context.Response.WriteAsync("偽靜態"); //context.Response.Redirect("/home/Privacy"); return; } await next(context); });
這樣就不會出現404了。表面上是訪問靜態頁面,實際上可以返回一個動態頁面回去。
將上面中介軟體進行封裝
public class UrlMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public UrlMiddleware(RequestDelegate next, ILoggerFactory logger) { _next = next; _logger = logger.CreateLogger<RequestIPMyMiddleware>(); } public async Task Invoke(HttpContext context) { //if (context.Request.Path == "/") //{ // await context.Response.WriteAsync("Hello terminal middleware!"); // return; //} if (context.Request.Path == "/home/about") { context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼 await context.Response.WriteAsync("關於我們頁面"); return; } if (context.Request.Path == "/home/about.html") { context.Response.ContentType = "text/html;charset=UTF-8";//解決亂碼 await context.Response.WriteAsync("偽靜態"); //context.Response.Redirect("/home/Privacy"); return; } await _next.Invoke(context); //執行下一個中介軟體 } }
在為其建立擴充套件方法
public static class UrlMiddlewareExtensions
{
public static IApplicationBuilder UseMyUrl(this IApplicationBuilder app)
{
app.UseMiddleware<UrlMiddleware>();
return app;
}
}
Configure方法裡直接呼叫即可