ABP 接口开发步骤
ABP 接口开发步骤
一.数据库生成
1. 创建实体
在MyCompanyName.AbpZeroTemplate 下创建实体。
[Table("TelphoneBook")]public class TelphoneBook : Entity<string>, IHasCreationTime, IMayHaveTenant, IHasDeletionTime, IHasModificationTime{/// <summary>/// 电话号码/// </summary>[Required][StringLength(11)]public string PhoneNumber { get; set; }/// <summary>/// 姓/// </summary>[Required][StringLength(50)]public string FirstName { get; set; }/// <summary>/// 名/// </summary>[Required][StringLength(50)]public string LastName { get; set; }public DateTime CreationTime { get; set; }public int? TenantId { get; set; }public DateTime? DeletionTime { get; set; }public bool IsDeleted { get; set; }public DateTime? LastModificationTime { get; set; }}
2. 生成数据库表
在MyCompanyName.AbpZeroTemplate.EntityFrameworkCore
下添加,在重写的 OnModelCreating(ModelBuilder modelBuilder)
方法中可以设置表的索引等
public virtual DbSet<TelphoneBook> TelphoneBooks { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{base.OnModelCreating(modelBuilder);modelBuilder.Entity<TelphoneBook>(b => {b.HasIndex(e => new { e.TenantId, e.PhoneNumber });});modelBuilder.ConfigurePersistedGrantEntity();}
上面步骤完成后,在控制台执行 Add-Migration MyCompanyName.AbpZeroTemplate.Telbook.TelphoneBook
执行成功后,接着执行更新操作 Update-Database
接口部分
在MyCompanyName.AbpZeroTemplate.Application.Shared
添加以下内容
namespace MyCompanyName.AbpZeroTemplate.Telbook.Dto
{public class TelphoneBookDto : EntityDto<string>, IHasCreationTime, IMayHaveTenant, IHasDeletionTime, IHasModificationTime{/// <summary>/// 电话号码/// </summary>public string PhoneNumber { get; set; }/// <summary>/// 姓/// </summary>public string FirstName { get; set; }/// <summary>/// 名/// </summary>public string LastName { get; set; }public DateTime CreationTime { get; set; }public int? TenantId { get; set; }public DateTime? DeletionTime { get; set; }public bool IsDeleted { get; set; }public DateTime? LastModificationTime { get; set; }}
}
namespace MyCompanyName.AbpZeroTemplate.Telbook
{public interface ITelBookAppService: IApplicationService{PagedResultDto<TelphoneBookDto> GetTelBooks(GetTelBooksInput input);Task CreateOrUpdateTelBook(CreateOrUpdateTelbookInput input);Task DeleteTelBook(string id);}
}
namespace MyCompanyName.AbpZeroTemplate.Telbook.Dto
{/// <summary>/// 查询用/// </summary>public class GetTelBooksInput : PagedAndSortedInputDto{public string PhoneNumber { get; set; }}
}
在MyCompanyName.AbpZeroTemplate
下实现ITelBookAppService
接口
[AbpAuthorize(AppPermissions.Pages_Telbooks)]public class TelBookAppService : AbpZeroTemplateAppServiceBase, ITelBookAppService{private readonly IRepository<TelphoneBook, string> _telbookRepository;public TelBookAppService(IRepository<TelphoneBook, string> telbookRepository){_telbookRepository = telbookRepository;}[HttpPost]public async Task CreateOrUpdateTelBook(CreateOrUpdateTelbookInput input){if (string.IsNullOrEmpty(input.Id)){await UpdateTelbookAsync(input);}else{await CreateTelbookAsync(input);}}[HttpPost]public async Task UpdateTelbookAsync(CreateOrUpdateTelbookInput input){Debug.Assert(input.Id != null, "input.Id != null");await CheckTelbookIfAlreadyExists(input.PhoneNumber);var info = await _telbookRepository.GetAsync(input.Id);info.PhoneNumber = input.PhoneNumber;info.FirstName = input.FirstName;info.LastName = input.LastName;info.IsDeleted = false;info.LastModificationTime = DateTime.UtcNow;await _telbookRepository.UpdateAsync(info);}[HttpPost]public async Task CreateTelbookAsync(CreateOrUpdateTelbookInput input){await CheckTelbookIfAlreadyExists(input.PhoneNumber);await _telbookRepository.InsertAsync(new TelphoneBook(){Id = input.Id,FirstName = input.FirstName,LastName = input.LastName,PhoneNumber = input.PhoneNumber,IsDeleted = false,TenantId = AbpSession.TenantId,CreationTime = DateTime.UtcNow,});}[HttpPost]public async Task DeleteTelBook(string id){var info = await _telbookRepository.GetAsync(id);await _telbookRepository.DeleteAsync(info);}[HttpPost]public PagedResultDto<TelphoneBookDto> GetTelBooks(GetTelBooksInput input){var query = _telbookRepository.GetAll();var Count = query.Count();if (!input.Sorting.IsNullOrEmpty()){query = query.OrderBy(input.Sorting);}//Pagingif (input.SkipCount > 0){query = query.Skip(input.SkipCount);}if (input.MaxResultCount > 0){query = query.Take(input.MaxResultCount);}var ListDtos = ObjectMapper.Map<List<TelphoneBookDto>>(query.ToList());return new PagedResultDto<TelphoneBookDto>(Count,ListDtos); }private async Task CheckTelbookIfAlreadyExists(string phonenumber){var obj = (await _telbookRepository.GetAllListAsync()).FirstOrDefault(l => l.PhoneNumber == phonenumber);if (obj == null){return;}throw new UserFriendlyException(L("ThisTelNumberAlreadyExists"));}}
最后一步,在 MyCompanyName.AbpZeroTemplate.CreateMappings
添加实体映射(这里真的很重要)。
//TelBookconfiguration.CreateMap<TelphoneBook, TelphoneBookDto>();
最后运行MyCompanyName.AbpZeroTemplate.Web.Host
访问*https://localhost:44301/swagger/index.html
*
备注: 由于使用的数据库为PostGreSql, 里面涉及到的时间为 UTC格式, 所以这个一定要处理, 要不然无法正常访问。可以在启动程序中设置全局时间格式。
//设置UTC时间格式Clock.Provider = ClockProviders.Utc;
刚开始写博客, 若有不足之处, 还请各位见谅。
ABP 接口开发步骤相关推荐
- 目录 Amazon亚马逊spapi接口开发步骤
Amazon亚马逊spapi接口开发流程(目录) 准备亚马逊店铺,科技类公司营业执照. 店铺内开发者中心申请开发者资料. 创建AWS全球账号,创建iam账号并配置. 创建应用,填写应用相关配置信息. ...
- 海关 实时数据 企业联调接口 开发步骤与概要
写这个文章前, 先呐喊几声, 一吐心中不快, 诺大的中国海关, 连个指导都没有, 写的文档与demo, 100个人有99.9个人不懂, 还有0.1个人一次能懂的都算是神童, 首先, 中国海关数据中心, ...
- YII2.0 接口开发步骤
新建表的model来操作表. 访问你本地站点的XXX/gii 即可打开.如果提示无法访问请自行修改config/web.php 文件下面的IP选项 $config['modules']['gii'] ...
- T100接口开发步骤简介
T100 WebService Server端开发: 开发流程:1.服务注册:2.服务程序签出:3.服务程序撰写:4.服务程序上传 1.azzi700注册服务规格编号,然后签出就可以写程序了 2.宣告 ...
- Python——接口开发
接口开发步骤是: 1.下载安装flask模块 pip install flask 2.引入 flask模块 import flask 3.创建一个server ser ...
- 开发步骤 采用restful接口开发的开发步骤
2019独角兽企业重金招聘Python工程师标准>>> 项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开发步骤如下: 1.需求分析 ...
- 通达信接口进行二次编程开发步骤
大家都知道通达信接口是比较流行的快速通达信数据excel接口,能够提供多家券商,包括通达信数据excel接口.量化回测平台等. 通达信接口API接口说明(部分) 今天小编主要讲一下,关于通达信接口进行 ...
- 初识ABP vNext(9):ABP模块化开发-文件管理
点击上方蓝字"小黑在哪里"关注我吧 创建模块 模块开发 应用服务 运行模块 单元测试 模块使用 前言 在之前的章节中介绍过ABP扩展实体,当时在用户表扩展了用户头像字段,用户头像就 ...
- 说说第三方支付接口开发及开发中遇到的坑爹问题
前言 最近在做公司的支付接口,从微信支付到各种第三方的支付接口,还有点卡等支付,微信支付文档相对比较详细,虽然也不少坑,被各路开发人员吐槽,但是填的人多啊,所以是最好开发的,但是公司还有用到一些第三方 ...
最新文章
- 简单分解帮助看清复杂问题
- c#NPOI导出2007版本excel
- Python笔记-BeautifulSoup通过查找Id获取元素信息
- Android studio如何更改应用程序的图标以及名称
- apollo 配置中心_Spring Cloud 系列之 Apollo 配置中心(三)
- 怎么打断点_孩子注意力不集中怎么办?7招提升儿童专注力,方法简单效果好...
- SQL Server 2008 白皮书
- 修改MySQL数据库最大连接数的两种方法
- Quartz 知识点汇总
- 超强进程结束命令NTSD
- LabVIEW 阵列信号处理
- 二广高速公路4标段道路设计--武汉理工大学本科生毕业设计
- Java保留2位小数 JS保留2位小数 Java截取2位小数 Math.round((1.0/3)*100)/100.0
- 飞鱼星流控王VF12路由器使用体验
- Mac苹果电脑开启任何来源选项详细教程
- java自行车怎么调档_变速的自行车如何调档
- LaTeX的下载和使用(TexLive + TexStudio)
- C++关于利用_kbhit()函数持续获取键盘输入的一点心得。
- 怎么在百度地图上标注公司地址
- [原创]中国象棋翻翻棋,休闲,对战,娱乐,小游戏,jQuery小游戏,下载即用,代码注释全(附源码)