上节演示如何建立一个 api项目,本节初步认识项目相关的基础内容!web
项目生成后,你会在根目录看到两个文件 Program.cs、Startup.csapi
Program.cs就很少说了,就是一个控制台程序,作初始化加载操做跨域
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } /// <summary> /// 默认初始化系统内置的配置 /// </summary> /// <param name="args"></param> /// <returns></returns> public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
Startup.cs 在项目开发当中,会常常打交道,主要有两个方法,我的理解以下app
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } /// <summary> /// This method gets called by the runtime. Use this method to add services to the container. /// 侧重于注册或者添加支持某个组件 /// 当你须要用到某个第三方组件时,在这里添加以后就可使项目支持了 /// 好比:要想使项目支持跨域时, 添加相应包以后,就须要在这里使用services.AddCors 添加组件支持 /// 再好比:作认证受权时,想要使用第三方JWT组件生成token之类的内容时,也须要在这里添加相关支持 /// 再好比:读取配置文件时,也须要在这里作相应操做 /// 等等。。。 /// 它就相似一台组装台式机,当须要硬盘时,在这里安装硬盘的注册支持就可使用;当须要内存条时,一样在这里注册支持才能使用 /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { services.AddControllers(); } /// <summary> /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. /// 侧重于客户端的http请求过滤,或者说请求拦截,配置如何去处理http请求 /// 当客户端发起一个http请求时,会进入该方法,按照从上到下的顺序依次执行, /// 当执行到某个业务时,若是不符合业务规则,会直接返回,并根据你设置的程序逻辑给出相应提示! /// 好比:原来MVC中的路由配置直接挪到了这里 /// 好比:当你作认证受权过滤时,就要在这里配置一下,而后登陆时会自动先通过这里作逻辑验证
/// 用管道比喻就是,在一个管道里边作了一层层横向拦截,交钱了就放行,没钱的从哪儿来回哪儿去! /// </summary> /// <param name="app"></param> /// <param name="env"></param> public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } }