但是本着精简易维护的原则

时间:2021-11-25 02:30:05

今天终于做了第一个任务,学习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

标签:

原文地点:https://www.cnblogs.com/luffyyang/p/8932471.html