1. 程式人生 > >WebAPI實例--第一個API

WebAPI實例--第一個API

key 邏輯 今天 命名 取數據 admin 更新 調用 項目結構

今天終於做了第一個任務,學習API之後的第一個實例。銷售設置開發API。

第一、層次結構

1.API各層

項目結構主要有五層,分別為API、BizModel、Data、DBModel、Logic。

2.各層作用

首先對於微服務架構來說,前後端分離,後端提供數據支撐,前端UI通過API獲取數據。

API為controller接收參數,controller層不做任何邏輯處理,只是通過Model接收參數,調用Logic進行邏輯處理。

BizModel為對應前端UI的實體數據模型。我們都知道DBModel是對應數據庫字段的實體數據模型,而BizModel對應UI控件。例如:一個User,包含ID、username、password、email等字段,而前端可能控件不只是對應填寫User的字段,可能填寫此User的同學、家人的信息,則DBModel就無法對應。所以BizModel為前端傳遞數據,可以對應多個DBModel中的字段。BizModel通過Logic分成DBModel再進行SQL動作。

Data層進行數據庫讀寫動作。

DBModel為實體數據模型。

Logic為邏輯層,對BizModel分離為DBModel,調用Data層執行讀寫動作。

第二、API構建

1.對應數據表字段構建DBModel

查看需要進行操作的數據表,對應字段寫入

public class PreferenceModel
    {
        public Guid AdminUserKey { get; set; }
        public string MsCCode { get; set; }
        public int ShippingAddressSource { get; set; }
        public bool Audit1 { get; set; }
        public bool Audit2 { get; set; }
        public int AutoFeedBack { get; set; }
        public int eBayMsgSHowlines { get; set; }
        public bool DirectSalesAudit1 { get; set; }
        public bool DirectSalesAudit2 { get; set; }
        public bool NewTemplate { get; set; }
    }

2.對應UI傳參構建BizModel

public class PreferenceEntity
    {
        public Guid AdminUserKey { get; set; }
        public string MsCCode { get; set; }
        public int? ShippingAddressSource { get; set; }
        public bool? Audit1 { get; set; }
        public bool? Audit2 { get; set; }
        public int? AutoFeedBack { get; set; }
        public int? eBayMsgSHowlines { get; set; }
        public bool? DirectSalesAudit1 { get; set; }
        public bool? DirectSalesAudit2 { get; set; }
        public bool? NewTemplate { get; set; }
    }

3.Data層數據庫讀寫方法

在此不做詳細展示,自行處理即可。

4.Logic層處理邏輯,並調用Data層方法進行動作

這裏講一下更新的邏輯,在項目中銷售設置分為兩個頁面,三個更新動作,對應同一個數據表。所以邏輯不是很復雜,但是想要更新不同數據,又不影響其他數據,只用一個API,就要進行一定處理。

原本我的想法是Data層三個方法分別進行更新,在Logic層進行區分,這種方法不是不可以,但是本著精簡易維護的原則,只使用一個方法更新,邏輯層進行處理。所以思路是controller接收參數調用Logic,將參數通過Entity傳遞給Logic,然後在Logic判斷如果某一字段的參數並未傳遞新值,則使用原數據值進行更新。思路正確,下一步實施。

遇到問題int、bool類型字段不能判斷非空,所以不知道int型默認的0和bool型默認的false是不是傳遞過來的值。

解決方法:在BizModel將bool和int定義為bool?和int?,使用隱形,就可以判斷變量是否為空,如果不為空,再將參數強制轉換,進行數據更新。

5.Controller定義

API只有GET、PUT、POST、DELETE方法,為了規範,Controller命名必須規範。Controller接收參數,調用Logic返回數據。

至此,API的主要構建已完成,接下來Build查看是否有錯誤,無錯誤試運行,進入Swagger測試。

測試成功後發布,發布完成使用Postman進行測試。

WebAPI實例--第一個API