1. 程式人生 > 實用技巧 >.Net Core 3.x Api開發筆記 -- Starup入門(二)

.Net Core 3.x Api開發筆記 -- Starup入門(二)

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