มิดเดิลแวร์คือส่วนประกอบซอฟต์แวร์ที่ประกอบเป็นไปป์ไลน์แอปพลิเคชันเพื่อจัดการคำขอและการตอบกลับ
แต่ละองค์ประกอบจะเลือกว่าจะส่งคำขอไปยังส่วนประกอบถัดไปในไปป์ไลน์หรือไม่ และสามารถดำเนินการบางอย่างก่อนและหลังการเรียกใช้ส่วนประกอบถัดไปในไปป์ไลน์
ส่วนขยายแผนที่ใช้เป็นแบบแผนสำหรับการแยกไปป์ไลน์
วิธีการขยายแผนที่ใช้เพื่อจับคู่ผู้ได้รับมอบหมายคำขอตามเส้นทางของคำขอ แผนที่เพียงยอมรับเส้นทางและฟังก์ชันที่กำหนดค่ามิดเดิลแวร์ไปป์ไลน์แยกกัน
ในตัวอย่างต่อไปนี้ คำขอใดๆ ที่มีพาธฐานของ /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"
//...
});
});