前言

終於進入 WebApi 部分,也是目前工作最常做的一部分。
這邊會從原始 MVC 作為開頭介紹,內容會帶入 Dapper、Restful 介紹,以及一些好用小工具分享。

本文

一、事前準備

1、首先我們先建立一個 core 專案。 選擇 API 建立

2、資料庫準備。 先到此連結下載北風資料庫


點選 instnwnd.sql,選擇 Download。

會看到瀏覽器顯示一長串 SQ L語法,把這邊全部複製起來。

到 SSMS 點選新增查詢,把語法貼上後執行。

看到資料庫出現 Northwind 代表成功。

二、API 開發

1、首先我們建立一個 Models 資料夾。

建立一個 ProductModel 類別,對應北風資料庫的 Products。

建立 ProductModel

public class ProductModel
    {
        /// <summary>
        /// 商品流水號
        /// </summary>
        public int ProductID { get; set; }

        /// <summary>
        /// 商品名稱
        /// </summary>
        public string ProductName { get; set; }

        /// <summary>
        /// 供應商ID
        /// </summary>
        public int SupplierID { get; set; }

        /// <summary>
        /// 種類ID
        /// </summary>
        public int CategoryID { get; set; }

        /// <summary>
        /// 每單位數量
        /// </summary>
        public string QuantityPerUnit { get; set; }

        /// <summary>
        /// 每單位價格
        /// </summary>
        public decimal UnitPrice { get; set; }

        /// <summary>
        /// 每單位稅額
        /// </summary>
        public Int16 UnitsInStock { get; set; }

        /// <summary>
        /// 每單位訂購價
        /// </summary>
        public Int16 UnitsOnOrder { get; set; }

        /// <summary>
        /// 重新訂購等級
        /// </summary>
        public Int16 ReorderLevel { get; set; }

        /// <summary>
        /// 是否已停產
        /// </summary>
        public bool Discontinued { get; set; }
    }

這邊各欄位的型態可以先看 DB 內資料類型

再到以下網址對照型態

2、安裝 Dapper

到專案 Nuget 套件管理員,點選管理方案的 Nuget 套件。

搜尋 Dapper,並且安裝。

3、建立一個 Repositories 資料夾。

這邊 Repositories 資料夾統整跟資料庫相關檔案。

建立 ConnectionHelper

    public class ConnectionHelper
    {
        /// <summary>
        /// 連線字串
        /// </summary>
        private static string _connectionStr = @"Server=localhost;Database=Northwind;Trusted_Connection=True;";

        /// <summary>
        /// 資料庫連線
        /// </summary>
        public static string ConnectionStr { get { return _connectionStr; } }
    }

備註:這邊一般資料庫連線字串正常都會有使用者帳號、密碼,為了方便示範,就用此方法連線。

建立 ProductRepository

        /// <summary>
        /// 取得產品列表
        /// </summary>
        /// <returns></returns>
        public IEnumerable<ProductModel> GetProductList()
        {
		//sql select products這張資料表
            var sql = @"SELECT productid,
                               productname,
                               supplierid,
                               categoryid,
                               quantityperunit,
                               unitprice,
                               unitsinstock,
                               unitsonorder,
                               reorderlevel,
                               discontinued
                        FROM   products ";

		//先與資料庫進行連線
            var connection = new SqlConnection(ConnectionHelper.ConnectionStr);

               //透過Dapper與資料庫連線後取回資料
            var result = connection.Query<ProductModel>(sql);

            return result;
        }

備註:這邊 SqlConnection 一開始應該會出現提示紅字,要記得透過 Nuget 安裝 SqlClient。

4、建立 PoructController

    [Route("api/")]
    public class ProductContorller : ControllerBase
    {
        [Route("Product")]
        [HttpGet]
        public IEnumerable<ProductModel> GetProductList()
        {
            var repository = new ProductRepository();
            var result = repository.GetProductList();

            return result;
        }
    }

5、運行專案進行測試。

Router:https://localhost:44395/api/product « 這邊前面 localhost 數字是port有可能專案建置會不同,要自己更改成專案運行起來的設置。
成功後會看到一串密密麻麻的 JSON 字串。

因為這樣不容易閱讀,使用 Chrome 的話可以安裝 jsonViewer這個擴充功能。

安裝完後啟用再到剛剛網址重新整理,就可以看到工整的 JSON 字串了。

參考連結