上節演示如何創建一個 api項目,本節初步認識項目相關的基礎內容!
項目生成後,你會在根目錄看到兩個文件 Program.cs、Startup.cs
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 在項目開發當中,會經常打交道,主要有兩個方法,個人理解如下
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(); }); } }