上節演示如何建立一個 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(); }); } }