是否可以只对不来自js的请求执行中间件。因为我有一个中间件,执行它对我的服务器的js请求没有什么必要。是否有可能检查请求不是直接的?
发布于 2018-09-26 07:00:15
您不能只对某些请求执行中间件,但可以检查请求是否满足中间件中的条件,例如,如果请求中存在报头。
假设您的js客户端调用您的api,在每个请求中添加一个自定义标头,您可以编写一个中间件,检查该标头,并在出现报头的情况下执行一些代码。
app.Use((context, next) =>
{
if (context.Request.Headers.Any(h => h.Key == "Custom-Header"))
{
DoStuff();
}
return next();
})
发布于 2018-09-26 21:35:05
对于执行特定请求的中间件,您可以尝试MapWhen。
public void Configure(IApplicationBuilder app)
{
app.MapWhen(context => context.Request.Query.ContainsKey("branch"),
HandleBranch);
app.Run(async context =>
{
await context.Response.WriteAsync("Hello from non-Map delegate. <p>");
});
}
为了检查是否处理请求,实现您自己的逻辑来替换context.Request.Query.ContainsKey("branch")
。
https://stackoverflow.com/questions/52520339
复制