Asp.netCore3.0 WebApi從0到1手摸手教你寫【1】簡單的webapi接口

開發環境

Visual Studio 2019
.net core 3.0

打開vs2019新建項目

具體步驟如下圖:


第一步創建新項目

第二步選擇ASP.NET Core Web應用程序然后下一步

第三步配置新項目然后點創建

此處我們選擇API(新手不推薦選擇空項目,選擇API系統會為我們自動創建WebApi需要的一些配置文件等),Https配置這一項我們暫時不勾選,目前我們不配置Https。


第四步創建新的ASP.Net Core Web 應用程序

點創建以后的界面如下圖:
XXX webapi

運行項目

F5運行項目,然后就可以看到微軟為我們寫好的一個天氣預報示例webapi了,這里只有一個Get請求示例,返回值為json格式。


天氣預報webapi示例

Startup.cs說明

注意:services.AddControllers();endpoints.MapControllers(); 方法成對出現, 這是.net core3.0中的最新寫法

ConfigureServices方法
用來向容器中注冊服務,注冊好的服務可以在其他地方進行調用.

Configure方法
用來配置中間件管道,即如何響應http請求.


創建第一個Controller

1 右鍵刪除系統默認創建的WeatherForecastController.csWeatherForecast.cs
2 新建一個控制器,命名:UserController.cs

新建UserController 01

新建UserController 02

新建UserController 03

新建以后如下圖:
UserController

注:我們打開項目依賴項,可以看到系統默認給我們增加了EntiyFrameworkCore的引用,由此就可以看出微軟也在大力推廣EF的使用了。
image.png

回歸正題,我們在UserController中增加一個Loginget方式的接口方法,返回一個hello,我們打算通過請求api/User/Login來得到這個hello,F5運行程序

namespace XXX.api.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UserController : ControllerBase
    {
        [HttpGet]
        public IActionResult Login()
        {
            return Ok("hello");
        }
    }
}

問題來了,為啥直接給打開weatherforecast,而且還404了,別急,往下看。

404了

在項目Properties中打開launchsettings.json
launchsettings.json

修改launchsettings.json,我們刪掉了關于IIS相關的內容(讓webapi不通過IIS來加載),然后修改了lauchUrl屬性,如下:

{
  "profiles": {
    "XXX.api": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/User/Login",
      "applicationUrl": "http://localhost:5000/",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

(┬_┬)怎么還是404?別急繼續往下看

依然404

因為我們是要通過api/User/Login來得到這個hello,所以我們要在UserController里定義一個action的動作,這樣才能通過api/User/Login來得到這個hello,如下圖新增action

F5運行結果如下:
運行結果

增加全局路由

上面增加action雖然能達到想要的結果,但是每次新建一個Controller都有寫個action萬一要是忘記了又要忙乎半天,有沒有一勞永逸的辦法呢?
繼續往下看:
1.首先去掉Controller里的RouteApiController

1

2.修改Startup.cs,增加路由模版:

配置路由

感覺每次還是刪除兩段代碼還是有點麻煩,雖然麻煩,但是用全局路由可以方便后期更改,萬一老板不想通過api/xxx/xxx的方式來訪問接口,想通過api2/xxx/xxx的方式訪問,此時你只需要修改下Startup.cs即可。

今天就到這里,后期繼續完善我們的webapi。

項目源碼地址

https://github.com/xiaxiaoqian/NetCore3.0-WebApi

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容