Wednesday, February 19, 2025

JavaScript, How Response is processed

Predict output:
Example1.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await context.Response.WriteAsync("First Use Middleware\n"); // first execute
await next();
});

app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Second Use Middleware\n"); // second execute
await next();
});

app.Run();

Output:
First Use Middleware
Second Use Middleware

Example2.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});

app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
await next();
});

app.Run();
Output:
Second Use Middleware
First Use Middleware

Example3.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});

app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
});

app.Run();
Output:
Second Use Middleware
First Use Middleware

Example4.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
context.Response.Headers["cutsom-response-header"] = "This is a response header";
await next();
await context.Response.WriteAsync("First Use Middleware\n"); // #2
});

app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); // #1
});

app.Run();
Output:
Second Use Middleware
First Use Middleware

Example5.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
context.Response.Headers["cutsom-response-header"] = "This is a response header"; //#1
await next();
await context.Response.WriteAsync("First Use Middleware\n"); //#4
});

app.Use(async (context, next) =>
{
context.Response.Headers["custom-response-header"] = "This is second response header"; //#2
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); //#3
});

app.Run();
Output:
Second Use Middleware
First Use Middleware

Example6.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await next();
await context.Response.WriteAsync("First Use Middleware\n"); //#4 NEVER executed
context.Response.Headers["response-header-first"] = "This is a response header"; //#3 ERROR Cannot modify after Response has started
});

app.Use(async (context, next) =>
{
context.Response.Headers["response-header-second"] = "This is second response header"; //#1
await next();
await context.Response.WriteAsync("Second Use Middleware\n"); //#2
});

app.Run();
Output:
This localhost page can’t be foundNo webpage was found for the web address: https://localhost:7205/
HTTP ERROR 404

Example7.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await next(); //#1
await context.Response.WriteAsync("First Use Middleware\n"); //#2
context.Response.Headers["response-header-first"] = "This is a response header"; //#3 ERROR
});

app.Run();

Example8.
var builder = WebApplication.CreateBuilder(args);

var env = builder.Environment;
var logging = builder.Logging;
var services = builder.Services;

services.AddControllers();

var app = builder.Build();

app.Use(async (context, next) =>
{
await next(); //#1
context.Response.Headers["response-header-first"] = "This is a response header"; //#2
await context.Response.WriteAsync("First Use Middleware\n"); //#3
});

app.Run();

Output:
First Use Middleware

No comments:

Post a Comment

Hot Topics