.Net Core 3.1瀏覽器後端服務(一) Web API項目搭建

1、前言

基於CefSharp開發的瀏覽器項目已有一段時間,考慮到後期數據維護須要Server端來管理,故開啓新篇章搭建瀏覽器後端服務。該項目前期以梳理服務端知識爲主,後期將配合CefSharp瀏覽器項目一塊兒使用。html

關於服務端技術選型,考慮到近期恰好有項目需求,而且本人也想學習下Web API相關知識。故採用.Net Web API技術搭建後端服務項目。web

2、 Web API簡介

ASP.NET Web API是一個框架,能夠輕鬆構建HTTP服務,覆蓋普遍的客戶端,包括PC和移動設備。docker

3、Web API項目搭建

 打開VS 建立新項目選擇【ASP.NET Core Web 應用程序】點擊 【下一步】數據庫

填寫Project name及Location,點擊【Create】
json

爲了更好了解Web API項目,這裏選擇空項目,一步步搭建,關於Https及docker後期須要時在配置,暫時不勾選,點擊【Create】後端

建立完成後F5 運行 咱們熟悉的Hello World出現了。api

3、項目結構分析

建立完成後解決方案生成以下,紅框處爲項目所需依賴,綠框爲項目配置文件,橘黃框爲項目啓動入口及啓動設置,項目依賴可經過NuGet引用。瀏覽器

一、launchSettings.json

launchSettings.json 用於項目的運行準備工做。參數以下緩存

紅框中的啓動方式對應VS的選擇的啓動方式,IIS ExPress以IIS方式啓動,Project 以 Kestrel方式啓動app

咱們也能夠增長啓動方式配置

二、appsettings.json

appsettings.json 用於項目運行時所需的配置,好比數據庫配置、Redis配置、日誌配置、路徑配置、其餘配置等。

在實際開發中環境通常分爲開發環境、測試環境、生產環境。

而項目默認建立兩個配置文件:appsettings.json (公用配置文件)、appsettings.Development.json (開發環境配置文件)

如需配置生產環境可自行建立生產環境配置文件 appsettings.Production.json

並改變launchSettings.json中ASPNETCORE_ENVIRONMENT的value爲Production

 三、Program

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

在Program中看到了熟悉的Main方法,找到了程序的入口,Main方法中執行了 CreateHostBuilder(args).Build().Run(),建立、配置IHostBuilder並運行

CreateHostBuilder很複雜,感興趣的可查看源代碼分析,功力有限這裏不作深刻解析。

四、Startup

public void ConfigureServices(IServiceCollection services)
{
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGet("/", async context =>
        {
            await context.Response.WriteAsync("Hello World!");
        });
    });
}

Startup中提供了兩個方法 ConfigureServices和Configure

ConfigureServices用於服務注入,如數據庫服務,緩存服務等可在這裏進行注入

Configure用於指定ASP.NET應用程序如何響應HTTP請求,這裏經過配置中間件來完成請求處理,如可配置IP記錄、靜態資源處理等中間件等。

4、建立第一個接口

Configure方法中 UseEndpoints 返回的是「Hello World!」,那如何建立想要的接口呢?

起初建立的是空項目,再建立個api項目作下對比(建立過程和空項目相似,只是選擇API,此處略過),對好比下:

API項目中多了Controllers文件夾及WeatherForecas實體類

再看Startup類的對比:

API項目ConfigureServices 方法中 將控制器的服務注入IServiceCollection

API項目Configure 方法中 將控制器操做的終結點添加到.net 的路由

由上對比可知,咱們須要更改空項目,添加控制器的服務注入並將控制器操做的終結點添加到.net 路由,代碼以下:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

接着建立Controllers文件夾,並添加一個控制器爲HomeController以下:

[ApiController]
[Route("[controller]")]
public class HomeController : Controller
{
    [HttpGet]
    public string Get()
    {
        return "Home";
    }
}

F5運行

運行後發現404,這是因爲路由映射問題致使,瀏覽器輸入http://localhost:52233/Home

 運行正常,如何讓程序啓動後直接映射到Home控制器?這時用到前文提到的launchSettings.json文件,添加鍵值配置  "launchUrl": "Home",

從新啓動,默認訪問HomeController,好了,第一個接口建立成功。

5、結語

本章節建立了一個默認WebAPI項目,對項目中結構作了簡單表述,並建立了第一個接口。剛開始接觸Web服務類項目,如有不對之處,請各位道友指正!

相關文章
相關標籤/搜索