Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NET Core 파이프라인에 미들웨어를 추가하는 동안 Map 확장을 사용하는 것은 무엇입니까?

<시간/>

미들웨어는 요청 및 응답을 처리하기 위해 애플리케이션 파이프라인으로 조합되는 소프트웨어 구성 요소입니다.

각 구성 요소는 파이프라인의 다음 구성 요소에 요청을 전달할지 여부를 선택하고 파이프라인에서 다음 구성 요소가 호출되기 전후에 특정 작업을 수행할 수 있습니다.

맵 확장은 파이프라인 분기를 위한 규칙으로 사용됩니다.

Map 확장 메서드는 요청 경로를 기반으로 요청 대리자를 일치시키는 데 사용됩니다. Map은 단순히 경로와 별도의 미들웨어 파이프라인을 구성하는 기능을 허용합니다.

다음 예에서 기본 경로가 /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"
      //...
   });
});