WebAPI实例--第一个API
今天终于做了第一个任务,学习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的更多相关文章
- 实现单实例多线程安全API问题
前阵子写静态lib导出单实例多线程安全API时,出现了CRITICAL_SECTION初始化太晚的问题,之后查看了错误的资料,引导向了错误的理解,以至于今天凌晨看到另一份代码,也不多想的以为singl ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- 第十二节:WebApi自动生成在线Api文档的两种方式
一. WebApi自带生成api文档 1. 说明 通过观察,发现WebApi项目中Area文件夹下有一个HelpPage文件夹,如下图,该文件夹就是WebApi自带的生成Api的方式,如果该文件夹没了 ...
- ASP.NET Core WebApi使用Swagger生成api
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档
1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...
- 微服务Kong(三)——添加一个API
在开始前,请确保您已经安装了KONG服务,并且已经启动了KONG服务. 在本节中,您可以学习到:如何在KONG层添加一个API.这是您使用KONG来管理您的API的第一步.对于此篇教程,我们将使用 h ...
- 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...
- Flask一分钟Mock一个API
如果安装了Python,并且安装了Flask: pip install flask 那么就可以在短短一分钟内Mock出来一个API,而且只需要用到一个文件. 彻底告别在线Mock网站无法指定请求方法, ...
- 每天一个JavaScript实例-从一个div元素删除一个段落
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
随机推荐
- PDO 对 mysql的基本操作
PDO扩展操作 <?php $dsn = 'mysql:dbname=yii2;host=localhost'; $user = 'root'; $password = '123456'; tr ...
- Flex布局新写法兼容写法详解
很久之前用过flex,但是没有考虑过兼容性问题,为了兼容ios一定要加上-webkit前缀: ul{ display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ ...
- android:layout_margin真实含义 及 自己定义复合控件 layout()运行无效的问题解决
一.关于layout_margin 搞Android时间也不短了.对layout_margin也不陌生了,可近期遇到一个问题让我发现,对它的认识还不够深入全面.大量网络资料上都说,layout_mar ...
- 捕获海康威视IPCamera图像,转成OpenCV能够处理的图像(二)
海康威视IPCamera图像捕获 捕获海康威视IPCamera图像.转成OpenCV能够处理的IplImage图像(一) 捕获海康威视IPCamera图像.转成OpenCV能够处理的IplImage图 ...
- javascript获取指定区间范围随机数的方法
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code //获取指定区间范围随机数,包括lowerValue和upperValue funct ...
- LOOPS HDU - 3853 (概率dp):(希望通过该文章梳理自己的式子推导)
题意:就是让你从(1,1)走到(r, c)而且每走一格要花2的能量,有三种走法:1,停住.2,向下走一格.3,向右走一格.问在一个网格中所花的期望值. 首先:先把推导动态规划的基本步骤给出来. · 1 ...
- matlab 工具箱下载地址
1.平面操作工具箱 http://cathy.ijs.si/~leon/planman.html 2.SimMechanics 工具箱 (这个好像不是免费的) http://www.mathworks ...
- MATLAB——BP网络的设计
- VUE2 第六天学习--- vue单文件项目构建
阅读目录 VUE2 第六天学习--- vue单文件项目构建 回到顶部 VUE2 第六天学习--- vue单文件项目构建 VUE单文件组件在Vue项目中,然后使用 new Vue({el: '#cont ...
- C# 语法二 值类型引用类型
1.值类型 2.引用类型 一 值类型 值类型存放在栈中,引用类型存放在堆中. 值类型有:数值.布尔.字符,例如:int i;bool i2;char cr='a'; 二 引用类型 大多数类型是引用类型 ...