มิดเดิลแวร์คือส่วนประกอบซอฟต์แวร์ที่ประกอบเป็นไปป์ไลน์แอปพลิเคชันเพื่อจัดการคำขอและการตอบกลับ
แต่ละองค์ประกอบจะเลือกว่าจะส่งคำขอไปยังส่วนประกอบถัดไปในไปป์ไลน์หรือไม่ และสามารถดำเนินการบางอย่างก่อนและหลังการเรียกใช้ส่วนประกอบถัดไปในไปป์ไลน์
ส่วนขยายแผนที่ใช้เป็นแบบแผนสำหรับการแยกไปป์ไลน์
วิธีการขยายแผนที่ใช้เพื่อจับคู่ผู้ได้รับมอบหมายคำขอตามเส้นทางของคำขอ แผนที่เพียงยอมรับเส้นทางและฟังก์ชันที่กำหนดค่ามิดเดิลแวร์ไปป์ไลน์แยกกัน
ในตัวอย่างต่อไปนี้ คำขอใดๆ ที่มีพาธฐานของ /maptest จะได้รับการจัดการโดยไปป์ไลน์ที่กำหนดค่าในเมธอด HandleMapTest
ตัวอย่าง
private static void HandleMapTest(IApplicationBuilder app){ app.Run(async context =>{ await context.Response.WriteAsync("Map Test Successful"); }); } public void ConfigureMapping(IApplicationBuilder app){ app.Map("/maptest", HandleMapTest); }
นอกเหนือจากการแมปตามพาธแล้ว เมธอด MapWhen ยังสนับสนุนการแตกแขนงมิดเดิลแวร์แบบเพรดิเคต ทำให้สามารถสร้างไพพ์ไลน์แยกกันได้อย่างยืดหยุ่นมาก
สามารถใช้เพรดิเคตประเภท Func
private static void HandleBranch(IApplicationBuilder app){ app.Run(async context =>{ await context.Response.WriteAsync("Branch used."); }); } public void ConfigureMapWhen(IApplicationBuilder app){ app.MapWhen(context => { return context.Request.Query.ContainsKey("branch"); }, HandleBranch); app.Run(async context =>{ await context.Response.WriteAsync("Hello from " + _environment); }); }
แผนที่ยังสามารถซ้อนกันได้
app.Map("/level1", level1App => { level1App.Map("/level2a", level2AApp => { // "/level1/level2a" //... }); level1App.Map("/level2b", level2BApp => { // "/level1/level2b" //... }); });