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 接口开发步骤相关推荐

  1. 目录 Amazon亚马逊spapi接口开发步骤

    Amazon亚马逊spapi接口开发流程(目录) 准备亚马逊店铺,科技类公司营业执照. 店铺内开发者中心申请开发者资料. 创建AWS全球账号,创建iam账号并配置. 创建应用,填写应用相关配置信息. ...

  2. 海关 实时数据 企业联调接口 开发步骤与概要

    写这个文章前, 先呐喊几声, 一吐心中不快, 诺大的中国海关, 连个指导都没有, 写的文档与demo, 100个人有99.9个人不懂, 还有0.1个人一次能懂的都算是神童, 首先, 中国海关数据中心, ...

  3. YII2.0 接口开发步骤

    新建表的model来操作表. 访问你本地站点的XXX/gii 即可打开.如果提示无法访问请自行修改config/web.php 文件下面的IP选项 $config['modules']['gii'] ...

  4. T100接口开发步骤简介

    T100 WebService Server端开发: 开发流程:1.服务注册:2.服务程序签出:3.服务程序撰写:4.服务程序上传 1.azzi700注册服务规格编号,然后签出就可以写程序了 2.宣告 ...

  5. Python——接口开发

    接口开发步骤是: 1.下载安装flask模块   pip install flask 2.引入 flask模块         import flask 3.创建一个server        ser ...

  6. 开发步骤 采用restful接口开发的开发步骤

    2019独角兽企业重金招聘Python工程师标准>>> 项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开发步骤如下: 1.需求分析 ...

  7. 通达信接口进行二次编程开发步骤

    大家都知道通达信接口是比较流行的快速通达信数据excel接口,能够提供多家券商,包括通达信数据excel接口.量化回测平台等. 通达信接口API接口说明(部分) 今天小编主要讲一下,关于通达信接口进行 ...

  8. 初识ABP vNext(9):ABP模块化开发-文件管理

    点击上方蓝字"小黑在哪里"关注我吧 创建模块 模块开发 应用服务 运行模块 单元测试 模块使用 前言 在之前的章节中介绍过ABP扩展实体,当时在用户表扩展了用户头像字段,用户头像就 ...

  9. 说说第三方支付接口开发及开发中遇到的坑爹问题

    前言 最近在做公司的支付接口,从微信支付到各种第三方的支付接口,还有点卡等支付,微信支付文档相对比较详细,虽然也不少坑,被各路开发人员吐槽,但是填的人多啊,所以是最好开发的,但是公司还有用到一些第三方 ...

最新文章

  1. 简单分解帮助看清复杂问题
  2. c#NPOI导出2007版本excel
  3. Python笔记-BeautifulSoup通过查找Id获取元素信息
  4. Android studio如何更改应用程序的图标以及名称
  5. apollo 配置中心_Spring Cloud 系列之 Apollo 配置中心(三)
  6. 怎么打断点_孩子注意力不集中怎么办?7招提升儿童专注力,方法简单效果好...
  7. SQL Server 2008 白皮书
  8. 修改MySQL数据库最大连接数的两种方法
  9. Quartz 知识点汇总
  10. 超强进程结束命令NTSD
  11. LabVIEW 阵列信号处理
  12. 二广高速公路4标段道路设计--武汉理工大学本科生毕业设计
  13. Java保留2位小数 JS保留2位小数 Java截取2位小数 Math.round((1.0/3)*100)/100.0
  14. 飞鱼星流控王VF12路由器使用体验
  15. Mac苹果电脑开启任何来源选项详细教程
  16. java自行车怎么调档_变速的自行车如何调档
  17. LaTeX的下载和使用(TexLive + TexStudio)
  18. C++关于利用_kbhit()函数持续获取键盘输入的一点心得。
  19. 怎么在百度地图上标注公司地址
  20. [原创]中国象棋翻翻棋,休闲,对战,娱乐,小游戏,jQuery小游戏,下载即用,代码注释全(附源码)

热门文章

  1. Nature Communications:主要精神和神经退行性疾病的共同机制
  2. vue组件间通信方式
  3. vue组件通信的几种方法
  4. 短息接收--android短彩信的接收流程深入分析(framework)
  5. 深度学习中的优化算法之AdaGrad
  6. 初中计算机网络和因特网教案,初中信息技术走进因特网教学设计
  7. Java 可重入锁 不可重入锁
  8. 计算机毕业设计springboot+vue基本微信小程序的演出门票管理系统-票务转票系统
  9. Ubuntu16.04安装wps并解决系统缺失字体问题
  10. 重读TCP/IP(3)之以太网交换及VLAN