ABP理論學習之Web API控制器(新增)

2022-01-19 15:50:04 字數 2004 閱讀 2228

返回總目錄

abp通過abp.web.apinuget包整合了asp.net web api控制器。你可以像以往建立asp.net web api控制器那樣建立web api控制器。依賴注入對於有規律的apicontroller(其實就是繼承自abpapicontroller的控制器)是有效的。

但是你應該從abpapicontroller派生控制器,它提供了許多有用的東西,並且更好地整合到了abp中。

下面是乙個派生於abpapicontroller的簡單api控制器:

public class userscontroller : abpapicontroller

本地化

abpapicontroller定義了l方法使得本地化更為簡單。例子:

public class userscontroller : abpapicontroller

public userdto get(long id)

}

要使l方法生效,必須設定localizationsourcename。你可以在自己的api控制器基類中設定而不用在每個api控制器中都重複設定。

審計日誌

審計日誌不會為api控制器自動記錄。如果你要為api控制器記錄日誌的話,應該在控制器或者它的action方法上宣告audited特性。請檢視審計日誌獲取更多資訊。

授權你可以為api控制器或者action方法使用abpapiauthorize特性來阻止未授權的使用者使用控制器和action方法。例子:

public class userscontroller : abpapicontroller

}

abpapicontroller也定義了檢查許可權的isgranted方法作為快捷方式。請檢視授權一節獲取更多資訊。

工作單元

web api的action方法預設不是工作單元。例如,如果你需要在action方法中開啟資料庫連線,就需要像下面那樣宣告unitofwork特性:

public class userscontroller : abpapicontroller

[unitofwork]

public virtual listusers(string filter)

}

這裡我們宣告了unitofwork特性。因為倉儲的getall()方法返回了iqueryable,而當它使用tolist()方法(由於iqueryable的延遲執行)時需要乙個開啟的資料庫連線,所以這裡需要宣告該特性。注意該action方法應該宣告為virtual(否則攔截無法工作)。

請檢視工作單元獲取更多。

其他你還可以使用預注入的abpsession,eventbus,permissionmanager,permissionchecker,settingmanager,featuremanager,featurechecker,localizationmanager,logger,currentunitofwork等基屬性以及更多。

要了解以上屬性,請查閱其他相應部落格。

ABP理論學習之Abp Session

返回總目錄 當應用程式要求使用者登入時,那麼應用程式也需要知道當前使用者正在執行的操作。雖然asp.net本身在展現層提供了session物件,但abp也提供了在任何需要獲得當前使用者和租戶的地方都可以使用的iabpsession介面。關於iabpsession 為了獲得實際的session資訊,必...

ABP理論學習之開篇介紹

返回總目錄 為了和2016年春節賽跑,完成該系列部落格,我犧牲了今天中午的時間來完成該系列的第一篇 開篇介紹。開篇介紹嘛,讀過大學教材的同學都知道,這玩意總是那麼無聊,跟考試沒關係,乾脆直接跳過,呵呵,多麼美好的大學時光啊!不過,現在想想,開篇介紹確實不怎麼重要,它只是告訴我們今後我要開始講什麼了,...

ABP理論學習之Nuget包

返回總目錄 abp已經發布在nuget上,這裡是所有包的列表。abp abp系統的核心包。所有其他的包都依賴這個包。abp.web 提供了mvc和web api都使用的一些通用類和資源 abp.web.resource web層的資源 js,css.檔案 abp.web.mvc 提供一些asp.ne...