Asp.net core Middleware; Map, MapWhen Giriş.
Tags: dotnet, csharp
Published: 2021-10-14 18:55:49

## Map middleware ne işe yarar ?

Gelen path'e göre Use veya Run metodunu çalıştırmamıza sağlar.

Örnek : 

a.) Boş bir model-view-controller projesi yaratalım.
b.) Startup.cs içindeki Configure metodunun içini silip aşağıdaki kodları yapıştıralım.
```
app.Map("/map", config =>
            {
                config.Run(async context =>
                {
                    await context.Response.WriteAsync("Bu Run middleware den sonraski middleware calismayacak. Ve geriye donuyor..");
                });
            });

            
            app.Use(async (context, next) =>
            {
                await context.Response.WriteAsync(Environment.NewLine + "Bu middleware Use middleware'idir pipelini going" + Environment.NewLine);
                await next();
                await context.Response.WriteAsync(Environment.NewLine + "Bu middleware Use middleware'idir pipelini incoming/n" + Environment.NewLine);
            });
            app.Run(async context =>
            {
                await context.Response.WriteAsync("Bu middleware2 den sonrasi calismayacak.");
            });

```
c.) Uygulamayı çalıştıralım.

https://localhost:5001/Map
endpoint'e gidelim

Not: Sizde port farklı olabilir.

Sonuç : 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u8q7evndo0wvfa2dq2ky.png)
 
Gördüğünüz üzere Map ile gelen uygulamanın endpointine göre Run middleware'ini çalıştırdık.

## MapWhen middleware'i ne işe yarar ?

Map middleware'ini gördük, Map ile gelen endpoint'e göre farklı middleware'ler çalıştırabiliyorduk.

MapWhen ise gelen request'in herhangi bir özelliğine göre filtreleme yapabiliyoruz.


Örnek : 

a.) Startup.cs içindeki Configure metodunun içini silip aşağıdaki kodları yapıştıralım.

```
app.MapWhen(c=> c.Request.Method =="GET", config =>
            {
                config.Run(async context =>
                {
                    await context.Response.WriteAsync("Bu MapWhen-Run middleware den sonraski middleware calismayacak. Ve geriye donuyor..");
                });
            });

            app.Map("/map", config =>
            {
                config.Run(async context =>
                {
                    await context.Response.WriteAsync("Bu Run middleware den sonraski middleware calismayacak. Ve geriye donuyor..");
                });
            });

            
            app.Use(async (context, next) =>
            {
                await context.Response.WriteAsync(Environment.NewLine + "Bu middleware Use middleware'idir pipelini going" + Environment.NewLine);
                await next();
                await context.Response.WriteAsync(Environment.NewLine + "Bu middleware Use middleware'idir pipelini incoming/n" + Environment.NewLine);
            });
            app.Run(async context =>
            {
                await context.Response.WriteAsync("Bu middleware2 den sonrasi calismayacak.");
            });
```

b.) Uygulamayı çalıştıralım : 

Gördüğünüz üzere uygulamadan gelen herhangi bir GET isteği için aşağıdaki sonuç dönecektir artık.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2iogpx93tnw4aqgpcoe1.png)

Bir dahaki yazımda görüşmek dileğiyle.

En iyi dileklerim ile.

Mustafa Samed Yeyin.

https://www.dotnettr.com/