在.netcore中的控制器外部获取请求

时间:2018-10-25 03:12:49

标签: asp.net-core .net-core asp.net-core-webapi

有没有一种方法可以从方法中获取响应而无需使用控制器。我的意思是,为了从数据库中获取租户,我使用属性绑定,并从“ http://localhost:5000/api/tenants”获取属性。有没有一种方法可以不使用控制器(如服务)来检索值?例如在angular中,我使用httpclient获取响应。 .netcore 2 webapi中有类似的东西吗?谢谢你!

1 个答案:

答案 0 :(得分:0)

对于Controller,它使用UseMvc middleware将请求路由到控制器。

如果您不使用控制器,则可以尝试使用定制中间件直接根据请求路径返回数据。

    public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        //your config
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
       //your config
        app.Map("/tenants", map => {
            map.Run(async context => {
                var dbContext = context.RequestServices.GetRequiredService<MVCProContext>();
                var tenants = await dbContext.Users.ToListAsync();
                await context.Response.WriteAsync(JsonConvert.SerializeObject(tenants));
            });
        }); 
        app.Run(async context => {
            await context.Response.WriteAsync($"Default response");
        });          
    }
}