BodeAbp服务端介绍


BodeAbp.Frame:abp框架
BodeAbp.Modules:业务模块
BodeAbp.Plugins:插件
BodeAbp.Samples:示例



using System.Reflection;
using Abp.EntityFramework.Default;
using Abp.Localization.Dictionaries;
using Abp.Localization.Dictionaries.Xml;
using Abp.Modules;
using BodeAbp.Product.Providers; namespace BodeAbp.Product
{
/// <summary>
/// 产品模块
/// </summary>
public class BodeAbpProductModule : AbpModule
{
/// <summary>
/// 版本号
/// </summary>
public const string CurrentVersion = "0.1.0"; /// <summary>
/// 初始化前执行
/// </summary>
public override void PreInitialize()
{
Configuration.Localization.Sources.Add(
new DictionaryBasedLocalizationSource(
BodeAbpProductConsts.LocalizationSourceName,
new XmlEmbeddedFileLocalizationDictionaryProvider(
Assembly.GetExecutingAssembly(),
"BodeAbp.Product.Localization.Source"
)
)
); Configuration.Settings.Providers.Add<BodeAbpProductSettingProvider>();
Configuration.Navigation.Providers.Add<BodeAbpProductNavigationProvider>();
Configuration.Authorization.Providers.Add<BodeAbpProductAuthorizationProvider>(); DefaultDbContextInitializer.Instance.MapperAssemblies.Add(Assembly.GetExecutingAssembly());
} /// <summary>
/// 初始化执行
/// </summary>
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
} /// <summary>
/// 初始化后执行
/// </summary>
public override void PostInitialize()
{
base.PostInitialize();
}
}
}

using Abp.Application.Services;
using System.ComponentModel;
using Abp.Application.Services.Dto;
using BodeAbp.Product.Attributes.Dtos;
using System.Collections.Generic;
using System.Threading.Tasks; namespace BodeAbp.Product.Attributes
{
/// <summary>
/// 属性 服务
/// </summary>
[Description("属性接口")]
public interface IAttributesAppService : IApplicationService
{
#region 属性模版 /// <summary>
/// 获取 属性模版分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PagedResultOutput<GetAttributeListOutput>> GetAttributePagedList(QueryListPagedRequestInput input); /// <summary>
/// 获取 属性模版详情
/// </summary>
/// <param name="id">id</param>
/// <returns></returns>
Task<GetAttributeOutput> GetAttribute(int id); /// <summary>
/// 添加 属性模版
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task CreateAttribute(CreateAttributeInput input); /// <summary>
/// 更新 属性模版
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task UpdateAttribute(UpdateAttributeInput input); /// <summary>
/// 删除 属性模版
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task DeleteAttribute(List<IdInput> input); #endregion #region 属性值 /// <summary>
/// 获取 属性值分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PagedResultOutput<GetAttributeOptionListOutput>> GetAttributeOptionPagedList(QueryListPagedRequestInput input); /// <summary>
/// 获取 属性值详情
/// </summary>
/// <param name="id">id</param>
/// <returns></returns>
Task<GetAttributeOptionOutput> GetAttributeOption(int id); /// <summary>
/// 添加 属性值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task CreateAttributeOption(CreateAttributeOptionInput input); /// <summary>
/// 更新 属性值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task UpdateAttributeOption(UpdateAttributeOptionInput input); /// <summary>
/// 删除 属性值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task DeleteAttributeOption(List<IdInput> input); #endregion #region 分类 /// <summary>
/// 获取 分类分页
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PagedResultOutput<GetProductClassifyListOutput>> GetClassifyPagedList(QueryListPagedRequestInput input); /// <summary>
/// 获取 分类详情
/// </summary>
/// <param name="id">id</param>
/// <returns></returns>
Task<GetProductClassifyOutput> GetClassify(int id); /// <summary>
/// 添加 分类
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task CreateClassify(CreateProductClassifyInput input); /// <summary>
/// 更新 分类
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task UpdateClassify(UpdateProductClassifyInput input); /// <summary>
/// 删除 分类
/// </summary>
/// <param name="classifyId">分类Id</param>
/// <returns></returns>
Task DeleteClassify(int classifyId); #endregion
}
}
加载模块:

using System.Reflection;
using System.Web.Http;
using Abp.Application.Services;
using Abp.Configuration.Startup;
using Abp.Modules;
using Abp.WebApi;
using Abp.WebApi.Controllers.Dynamic.Builders;
using Swashbuckle.Application;
using System.Linq;
using System.Web.Http.Cors;
using BodeAbp.Zero;
using System;
using WebDemo.WebApi.Swagger;
using BodeAbp.Activity;
using BodeAbp.Product; namespace WebDemo.WebApi
{
[DependsOn(
typeof(AbpWebApiModule)
, typeof(WebDemoCoreModule)
, typeof(BodeAbpZeroModule)
, typeof(BodeAbpActivityModule)
, typeof(BodeAbpProductModule))]
public class WebDemoWebApiModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(WebDemoCoreModule).Assembly, "app")
.Build(); DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(BodeAbpZeroModule).Assembly, "zero")
.Build(); DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(BodeAbpActivityModule).Assembly, "activity")
.Build(); DynamicApiControllerBuilder
.ForAll<IApplicationService>(typeof(BodeAbpProductModule).Assembly, "product")
.Build(); Configuration.Modules.AbpWebApi().HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer")); var cors = new EnableCorsAttribute("*", "*", "*");
GlobalConfiguration.Configuration.EnableCors(cors); ConfigureSwaggerUi();
} private void ConfigureSwaggerUi()
{
Configuration.Modules.AbpWebApi().HttpConfiguration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "WebDemo.WebApi");
//c.OperationFilter<AuthorizationOperationFilter>();
c.DocumentFilter<ApplicationDocumentFilter>();
c.IncludeXmlComments(GetXmlCommentsPath(typeof(WebDemoCoreModule)));
c.IncludeXmlComments(GetXmlCommentsPath(typeof(BodeAbpZeroModule)));
c.IncludeXmlComments(GetXmlCommentsPath(typeof(BodeAbpActivityModule)));
c.IncludeXmlComments(GetXmlCommentsPath(typeof(BodeAbpProductModule)));
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
})
.EnableSwaggerUi(c => {
c.CustomAsset("index", typeof(WebDemoWebApiModule).Assembly, "WebDemo.WebApi.Swagger.index.html");
c.InjectStylesheet(typeof(WebDemoWebApiModule).Assembly, "WebDemo.WebApi.Swagger.theme-flattop.css");
c.InjectJavaScript(typeof(WebDemoWebApiModule).Assembly, "WebDemo.WebApi.Swagger.translator.js");
});
} private static string GetXmlCommentsPath(Type moduleType)
{
return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, moduleType.Assembly.GetName().Name);
}
}
}
确保webconfig中数据库连接正确,直接运行项目,浏览器访问:http://localhost:61759/swagger/ui/index#/,效果图如下:

BodeAbp服务端介绍的更多相关文章
- 数据同步canal服务端介绍
1.下载安装包 canal&github的地址,最权威的学习canal相关知识的地方 https://github.com/alibaba/canal 在下面的wiki列表中找到AdminGu ...
- 服务端预渲染之Nuxt(介绍篇)
现在前端开发一般都是前后端分离,mvvm和mvc的开发框架,如Angular.React和Vue等,虽然写框架能够使我们快速的完成开发,但是由于前后台分离,给项目SEO带来很大的不便,搜索引擎在检索的 ...
- 服务端渲染和nuxt简单介绍
概述 最近研究了一下服务端渲染,有一些心得,记录下来供以后开发时参考,相信对其他人也有用. 参考资料: Vue SSR指南 nuxt.js官网 服务端渲染介绍 服务端渲染简单来说,就是分别对项目用we ...
- NFS介绍 NFS服务端安装配置 NFS配置选项
NFS 介绍 • NFS是Network File System的缩写 • NFS最早由Sun公司开发,分2,,4三个版本,2和3由Sun起草开发,.0开始Netapp公司参与并主导开发,最新为4.1 ...
- 关于消息推送的补充,主要介绍服务端的实现,包含object c 版本 c 版本 java 版本 php 版本 (转)
要实现消息推送功能,我们可以采用第三方(腾讯:信鸽:百度:云推送:极光推送:友盟):当然,因为各种原因,我们不能使用第三方的推送服务,那我们就需要自己编写服务端.在网上寻觅了很久,找到一篇很不错的讲解 ...
- NFS介绍、服务端安装配置、NFS配置选项
6月21日任务 14.1 NFS介绍14.2 NFS服务端安装配置14.3 NFS配置选项 14.1 NFS介绍 14.2 NFS服务端安装配置 1.首先需要2台机器,一台是服务端,一台是客户端,分别 ...
- Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项
一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版 ...
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端参数验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用很多时候同样的数据验证逻辑会出现在不同的层,这样 ...
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...
随机推荐
- [20170916]sqlplus set array最小2补充.txt
[20170916]sqlplus set array最小2补充.txt --//以前写的贴子,链接http://blog.itpub.net/267265/viewspace-1453652/--/ ...
- ADOBE ACROBAT 去除Explorer右键菜单
运行以下命令: regsvr32 -u "C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat Elements\ContextMenu64.d ...
- EntityFramework Code-First 简易教程(五)-------领域类配置
前言:在前篇中,总是把领域类(Domain Class)翻译成模型类,因为我的理解它就是一个现实对象的抽象模型,不知道对不对.以防止将来可能的歧义,这篇开始还是直接对Domain Class直译. 前 ...
- 面向对象的封装与隐藏 this
当我们创建一个对象的时候,我们可以通过‘对象.属性’的方式,对对象的属性进行赋值. 这里赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件. 但是实际问题中我们需要给这个属性 ...
- 第五章 绘图基础(LINEDEMO)
LINEDEMO程序绘制一个矩形.两条直线.一个椭圆和一个圆角矩形.该程序表明,定义了封闭矩形的这些函数确实对这些区域进行了填充,因为椭圆后面的线被隐藏了. /*------------------- ...
- nginx服务器开启缓存、反向代理
一.反向代理配置 1.反向代理服务器配置如下 反向代理就是需要这一行proxy_pass来完成.当我们要访问后端web服务器的时候,我们只需要访问代理服务器就可以了,此时代理服务器就充当后端web服务 ...
- 20个最常用的Windows命令行
1. 中断命令执行Ctrl + Z 2. 文件/目录cd 切换目录例:cd // 显示当前目录例:cd .. // 进入父目录 3.创建目录md d:\mp3 // 在C:\建立mp3文件夹md d: ...
- 使用JavaConfig和注解方式实现零xml配置的Spring MVC项目
1. 引言 Spring MVC是Spring框架重要组成部分,是一款非常优秀的Web框架.Spring MVC以DispatcherServlet为核心,通过可配置化的方式去处理各种web请求. 在 ...
- Go学习笔记03-结构控制
目录 条件语句 循环语句 条件语句 条件语句用 if 关键字来判定条件,如: func bounded(v int) int { if v > 100 { return 100 } else i ...
- python3的C3算法
一.基本概念 1. mro序列 MRO是一个有序列表L,在类被创建时就计算出来. 通用计算公式为: mro(Child(Base1,Base2)) = [ Child ] + merge( mro(B ...