中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中怎么動態生成WebApi

發布時間:2021-07-16 11:10:55 來源:億速云 閱讀:401 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關ASP.NET中怎么動態生成WebApi,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

建立動態WebApi控制器

Abp框架能夠通過應用層自動生成web api:

public interface ITaskAppService : IApplicationService
    {
        GetTasksOutput GetTasks(GetTasksInput input);        void UpdateTask(UpdateTaskInput input);        void CreateTask(CreateTaskInput input);
    }

Abp框架通過一行關鍵代碼的配置就可以自動、動態的為應用層建立一個web api 控制器:

DynamicApiControllerBuilder.For<ITaskAppService>("tasksystem/task").Build();

這樣就OK了!建好的webapi控制器(/api/services/tasksystem/task)所有的方法都能夠在客戶端調用。webapi控制器通常是在模塊初始化的時候完成配置。 ITaskAppService是應用層服務(application service)接口,我們通過封裝讓接口實現一個api控制器。ITaskAppService不僅限于在應用層服務使用,這僅僅是我們習慣和推薦的使用方法。 tasksystem/task是api 控制器的命名空間。一般來說,應當最少定義一層的命名空間,如:公司名稱/應用程序/命名空間/命名空間1/服務名稱。 ‘api/services/’是所有動態web api的前綴。所以api控制器的地址一般是這樣滴:‘/api/services/tasksystem/task’,GetTasks 方法的地址一般是這樣滴: ‘/api/services/tasksystem/task/getTasks’。因為在傳統的js中都是使用駝峰式命名方法,這里也不一樣。 你也可以刪除一個api方法,如下:

DynamicApiControllerBuilder
    .For<ITaskAppService>("tasksystem/taskService")
    .ForMethod("CreateTask").DontCreateAction()
    .Build();

ForAll方法 在程序的應用服務層建立多個api控制器可能讓人覺得比較枯燥,DynamicApiControllerBuilper提供了建立所有應用層服務的方法,如下所示:

    DynamicApiControllerBuilder
    .ForAll<IApplicationService>(Assembly.GetAssembly(typeof(SimpleTaskSystemApplicationModule)), "tasksystem")
    .Build();

ForAll方法是一個泛型接口,第一個參數是從給定接口中派生的集合,最后一個參數則是services命名空間的前綴。ForAll集合有ITaskAppService和 IpersonAppService接口。根據如上配置,服務層的路由是這樣的:'/api/services/tasksystem/task'和'/api/services/tasksystem/person'。

服務命名約定:服務名+AppService(在本例中是person+AppService) 的后綴會自動刪除,生成的webapi控制器名為“person”。同時,服務名稱將采用峰駝命名法。如果你不喜歡這種約定,你也可以通過“WithServiceName”方法來自定義名稱。如果你不想創建所有的應用服務層,可以使用where來過濾部分服務。

使用動態JavaScript代理

你可以通過ajax來動態創建web api控制器。Abp框架對通過動態js代理建立web api 控制器做了些簡化,你可以通過js來動態調用web api控制器

    abp.services.tasksystem.task.getTasks({
    state: 1}).done(function (data) {    //use data.tasks here..});

js代理是動態創建的,頁面中需要添加引用:

<script src="/api/abp.ServiceProxies/GetAll" type="text/javascript"></script>

服務方法(service methods)返回約定(可參見JQ的Deferred),服務方法使用Abp框架.ajax代替,可以處理、顯示錯誤。

Ajax參數

自定義ajax代理方法的參數:

Abp.services.tasksystem.task.createTask({
assignedPersonId: 3,
description: 'a new task description...'
},{ //override jQuery's ajax parameters
async: false,
timeout: 30000
}).done(function () {
Abp.notify.success('successfully created a task!');
});

所有的jq.ajax參數都是有效的。

單一服務腳本

'/api/abpServiceProxies/GetAll'將在一個文件中生成所有的代理,通過 '/api/abpServiceProxies/Get?name=serviceName' 你也可以生成單一服務代理,在頁面中添加:

<script src="/api/abpServiceProxies/Get?name=tasksystem/task" type="text/javascript"></script>

Augular框架支持

Abp框架能夠公開動態的api控制器作為angularjs服務,如下所示:

(function() {
angular.module('app').controller('TaskListController', [
'$scope', 'abp.services.tasksystem.task',
function($scope, taskService) {
var vm = this;
vm.tasks = [];
taskService.getTasks({
state: 0
}).success(function(data) {
vm.tasks = data.tasks;
});
}
]);
})();

我們可以將名稱注入服務,然后調用此服務,跟調用一般的js函數一樣。注意:我們成功注冊處理程序后,他就像一個augular的$http服務。ABP框架使用angular框架的$http服務,如果你想通過$http來配置,你可以設置一個配置對象作為服務方法的一個參數。

要使用自動生成的服務,需要添加:

<script src="~/abp Framework/Framework/scripts/libs/angularjs/Abp Framework.ng.js"></script>
    <script src="~/api/abp Framework/ServiceProxies/GetAll?type=angular"></script>

Durandal支持

ABP框架可以注入服務到Durandal框架,如下:

define(['service!tasksystem/task'],
    function (taskService) {        //taskService can be used here});

上述就是小編為大家分享的ASP.NET中怎么動態生成WebApi了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

馆陶县| 兴隆县| 绵阳市| 花垣县| 永顺县| 建湖县| 灵山县| 外汇| 同江市| 江永县| 威信县| 拉萨市| 萨迦县| 建平县| 西盟| 永福县| 游戏| 夏津县| 巴塘县| 佳木斯市| 西安市| 扎鲁特旗| 宜宾县| 温泉县| 高清| 新民市| 姜堰市| 北票市| 承德县| 萨嘎县| 龙川县| 荆门市| 凉城县| 于田县| 郴州市| 南乐县| 二手房| 成武县| 黔东| 柳江县| 新绛县|