ABP dynamic API
打开ABP的事例项目SimpleTaskSystem.WebSpaAngular 中LayoutView
<!-- Dynamic scripts of ABP system (They are created on runtime and can not be bundled) -->
<!-- 添加对ABP系统运行时动态创建的脚本文件的引用 -->
<script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>
<script src="~/AbpScripts/GetScripts" type="text/javascript"></script>
1).<script src="~/api/AbpServiceProxies/GetAll?type=angular"></script>
Abp.WebApi.Controllers.Dynamic.Scripting.AbpServiceProxiesController
Abp\Framework\scripts\libs\requirejs\plugins\service.js
define(function () {
return {
load: function (name, req, onload, config) {
var url = abp.appPath + 'api/AbpServiceProxies/Get?name=' + name;
req([url], function (value) {
onload(value);
});
}
};
});
2).<script src="~/AbpScripts/GetScripts" type="text/javascript"></script>
通过在 script标签中添加控制器(AbpScriptsController)请求路径,来引如所有需要动态生成的脚本文件。这些脚本文件包含多租户管理脚本,session、本地化脚本、权限、导航、系统设置、事件触发器。
Abp.Web.Mvc.Controllers.AbpScriptsController控制器是用来提供各种动态脚本文件的
public async Task<ActionResult> GetScripts()
{
var sb = new StringBuilder(); sb.AppendLine(_multiTenancyScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(_sessionScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(_localizationScriptManager.GetScript());
sb.AppendLine(); sb.AppendLine(await _authorizationScriptManager.GetScriptAsync());
sb.AppendLine(); sb.AppendLine(await _navigationScriptManager.GetScriptAsync());
sb.AppendLine(); sb.AppendLine(await _settingScriptManager.GetScriptAsync()); sb.AppendLine(GetTriggerScript()); return Content(sb.ToString(), "application/x-javascript", Encoding.UTF8);
}
NavigationScriptManager ----负责创建导航脚本文件
LocalizationScriptManager ----负责创建本地化脚本文件
AuthorizationScriptManager --负责创建用户所有的权限脚本文件
SettingScriptManager ----负责创建自定义设置脚本文件
GetTriggerScript ----负责创建ABP系统的前端的事件总线
SimpleTaskSystem\SimpleTaskSystem.WebSpaAngular\Abp\Framework\scripts\libs\angularjs\abp.ng.js
该脚本文件向AngularJS中注入$httpProvider,实现请求模板地址的重定向。当请求模板 /App/Main/views/user/new.cshtml 时,会将Http请求的地址进行格式化(http://localhost:6247/AbpAppView/Load?viewUrl=/App/Main/views/user/new.cshtml)指向 Abp.Web.Mvc.Controllers.AbpAppViewController.Load()。根据传入的模板相对地址找到模板并返回。
/Abp/Framework/scripts/abp.js
ABP开发规则:
1).ILocalizableString 类型属性必须在资源文件中设置,否则异常
HttpHandler
Abp.Web.Mvc.Resources.Embedded.Handlers
ABP dynamic API的更多相关文章
- ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...
- ABP源码分析三十七:ABP.Web.Api Script Proxy API
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...
- ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- abp 基于api接口的页面内容提交
项目中,后端api接口需要接收来自页面提交的数据.注意下拉控件对应值,应该按以下方式赋值 @Html.DropDownListFor(m => m.IsFolder, new List<S ...
- VUE带Token访问Abp Vnext Api
上篇登录保存token用了3种方式,都可以在header带上Token访问,本次使用第四种保存方式Vuex中保存状态 stroe中配置好需要保存的字段及方法 import Vue from 'vue' ...
- [ABP框架]动态web Api的拦截用法。
先进行配置 首先这种需求,一般发生在APP端,我们给APP,不会给所有项目系统的接口给他们用.我们系统有200个接口,但是APP的需求只会用20个.那么这个需求也就应运而生了. 以上为API文件夹中为 ...
- ABP文档 - Javascript Api
文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions A ...
- ABP文档 - Web Api 控制器
文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...
- ABP官方文档翻译 5.2 动态We API层
动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...
随机推荐
- 【Raspberry Pi】新入手的Raspberry Pi3拼装日志
一.概述 2016年暑假某宝入手Raspberry Pi 3,装机清单: 树莓派主板 亚克力外壳 小风扇 散热片 30G SD card 螺丝若干颗 因机型问题,可能与你的机器有微小差异 二.装机过程 ...
- 2016huasacm暑假集训训练四 DP_B
题目链接:http://acm.hust.edu.cn/vjudge/contest/125308#problem/M 题意:有N件物品和一个容量为V的背包.第i件物品的费用是体积c[i],价值是w[ ...
- Go语言配置与开发环境配置
1.首先下载go的运行时 http://golang.org/dl/ 下载windows 的zip版本,解压到硬盘上的一个位置 2.设置环境变量如下 GOBIN %GOROOT%\bin //go的 ...
- 【emWin】例程二:显示“hello,world”
实验指导书及代码包下载: http://pan.baidu.com/s/1c1Csx48
- DS实验题 融合软泥怪-2 Heap实现
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...
- openwrt的配置
1,参考:http://www.cnblogs.com/gnuhpc/archive/2013/08/31/3293643.html(此人的博客还是挺不错的) http://www.cnblogs.c ...
- goaccess的安装和使用
一.简介1.goaccess用于分析apache和nginx日志的强大工具 2.官网:https://goaccess.io 二.安装1.下载goaccess的安装包wget http://tar.g ...
- Map<Key,Value>基于Value值排序
Map<Key,Value> 排序默认是按照KEY值的升序来进行. 针对按照Value来进行排序有两种方法: 第一种 使用TreeMap 代码如下 public class test{ ...
- github for window的代理设置方法
修改 .gitconfig 文件,主要是针对http 和 https进行修改,设置代理 [user] name = name email = mail@.com [http] proxy = 配置文件 ...
- 基于apache的tomcat负载均衡和集群配置
最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...