ABP理论学习之Web API控制器(新增)
返回總目錄
本篇目錄
- 介紹
- AbpApiController基類
- 本地化
- 審計(jì)日志
- 授權(quán)
- 工作單元
- 其他
介紹
ABP通過(guò)Abp.Web.ApiNuget包集成了 ASP.NET Web API控制器。你可以像以往創(chuàng)建Asp.Net Web API控制器那樣創(chuàng)建Web API控制器。依賴注入對(duì)于有規(guī)律的ApiController(其實(shí)就是繼承自AbpApiController的控制器)是有效的。
但是你應(yīng)該從AbpApiController派生控制器,它提供了許多有用的東西,并且更好地集成到了ABP中。
AbpApiController基類
下面是一個(gè)派生于AbpApiController的簡(jiǎn)單api控制器:
public class UsersController : AbpApiController {}本地化
AbpApiController定義了L方法使得本地化更為簡(jiǎn)單。例子:
public class UsersController : AbpApiController {public UsersController(){LocalizationSourceName = "MySourceName";}public UserDto Get(long id){var helloWorldText = L("HelloWorld");//...} }要使L方法生效,必須設(shè)置LocalizationSourceName。你可以在自己的api控制器基類中設(shè)置而不用在每個(gè)api控制器中都重復(fù)設(shè)置。
審計(jì)日志
審計(jì)日志不會(huì)為api控制器自動(dòng)記錄。如果你要為api控制器記錄日志的話,應(yīng)該在控制器或者它的action方法上聲明Audited特性。請(qǐng)查看審計(jì)日志獲取更多信息。
授權(quán)
你可以為api控制器或者action方法使用AbpApiAuthorize特性來(lái)阻止未授權(quán)的用戶使用控制器和action方法。例子:
public class UsersController : AbpApiController {[AbpApiAuthorize("MyPermissionName")]public UserDto Get(long id){//...} }AbpApiController也定義了檢查權(quán)限的IsGranted方法作為快捷方式。請(qǐng)查看授權(quán)一節(jié)獲取更多信息。
工作單元
Web API的action方法默認(rèn)不是工作單元。例如,如果你需要在action方法中打開數(shù)據(jù)庫(kù)連接,就需要像下面那樣聲明UnitOfWork特性:
public class UsersController : AbpApiController {private readonly IRepository<User, long> _userRepository;public UsersController(IRepository<User, long> userRepository){_userRepository = userRepository;}[UnitOfWork]public virtual List<UserDto> Users(string filter){var users = _userRepository.GetAll().Where(u => u.UserName.StartsWith(filter)).ToList();//...} }這里我們聲明了UnitOfWork特性。因?yàn)閭}(cāng)儲(chǔ)的 GetAll()方法返回了 IQueryable,而當(dāng)它使用 ToList()方法(由于IQueryable的延遲執(zhí)行)時(shí)需要一個(gè)打開的數(shù)據(jù)庫(kù)連接,所以這里需要聲明該特性。注意該action方法應(yīng)該聲明為virtual(否則攔截?zé)o法工作)。
請(qǐng)查看工作單元獲取更多。
其他
你還可以使用預(yù)注入的 AbpSession, EventBus, PermissionManager, PermissionChecker, SettingManager, FeatureManager, FeatureChecker, LocalizationManager, Logger, CurrentUnitOfWork等基屬性以及更多。
要了解以上屬性,請(qǐng)查閱其他相應(yīng)博客。
轉(zhuǎn)載于:https://www.cnblogs.com/farb/p/ABPWebAPI.html
總結(jié)
以上是生活随笔為你收集整理的ABP理论学习之Web API控制器(新增)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MongoDB与python 交互
- 下一篇: 【Java】类加载过程