從今天開始來學習如何在 ASP.NET Core 中構建 Web API 以及每項功能的最佳適用場景。關於這次示例的數據庫建立請參考《學習ASP.NET Core Razor 編程系列一》 至 《學習ASP.NET Core Razor 編程系列十九——分頁》html
本教程將建立如下 Web API:數據庫
API編程 |
說明api |
請求正文數組 |
響應正文瀏覽器 |
GET /api/Bookpost |
獲取全部的書籍信息學習 |
None測試 |
書籍的數組ui |
GET /api/Book/{id} |
經過 ID 獲取書籍信息 |
None |
書籍信息 |
POST /api/Book |
添加書籍信息 |
書籍信息 |
書籍信息 |
PUT /api/Book/{id} |
根據ID更新現有書籍信息 |
書籍信息 |
None |
DELETE /api/Book/{id} |
根據ID刪除書籍 |
None |
None |
下圖顯示了此次咱們所要建立的應用的設計。
1) 咱們打開Visual Studio 2017,在菜單中選擇「文件」菜單,而後選擇「新建」 > 「項目」。
2) 選擇「ASP.NET Core Web 應用程序」模板。 將項目命名爲 BookApi,而後單擊「肯定」。以下圖。
3) 在「新建 ASP.NET Core Web 應用程序 - BookApi」對話框中,選擇 ASP.NET Core 版本。 選擇「API」模板,而後單擊「肯定」。 請不要選擇「啓用 Docker 支持」與「爲HTTPS配置」。以下圖。
如今咱們已經建立了BookApi應用項目。ASP.NET Core MVC 項目模板會在咱們新建立的BookApi項目中默認建立一個WebAPI—— values
API。
在Visual Studio 2017中按 F5 運行應用程序。而後啓動瀏覽器,並在瀏覽器地址欄中輸入 http://localhost:5000/api/values
,瀏覽器會調用Get方法進行測試,返回以下圖的 JSON,則證實咱們的應用建立成功。
實體是一組表示應用管理的數據的類。 咱們此次使用單個 Book
類,接下來咱們來建立這個Book類。
1) 在Visual Studio 2017的「解決方案資源管理器」中,右鍵單擊項目。 選擇「添加」 > 「新建文件夾」。以下圖。
2) 將文件夾命名爲「Models」。
3) 右鍵單擊「Models」文件夾,而後選擇「添加」 > 「類」。 將類命名爲 Book,而後選擇「添加」。以下圖。
4)在Visual Studio 2017的「解決方案資源管理器」中打開咱們剛纔建立的Book.cs文件,並輸入如下代碼:
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Threading.Tasks; namespace BookApi.Models { public class Book { public int ID { get; set; } [Required] [StringLength(50, MinimumLength = 2)] public string Name { get; set; } [Display(Name = "出版日期")] [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } [Range(1, 200)] [DataType(DataType.Currency)] public decimal Price { get; set; } public string Author { get; set; } [Required] public string Publishing { get; set; } [Timestamp] public byte[] RowVersion { get; set; } } }
Id
屬性用做關係數據庫中的惟一鍵。
實體類可位於項目的任意位置,但按照慣例會使用 Models 文件夾。
我在這裏直接給出Book表的建立腳本,代碼以下。
CREATE TABLE [dbo].[Book]( [ID] [int] IDENTITY(1,1) NOT NULL, [Author] [nvarchar](max) NULL, [Name] [nvarchar](50) NOT NULL, [Price] [decimal](18, 2) NOT NULL, [ReleaseDate] [datetime2](7) NOT NULL, [Publishing] [nvarchar](max) NOT NULL, [RowVersion] [timestamp] NULL, CONSTRAINT [PK_Book] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]