前言
終於進入 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 字串了。