日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ABP理论学习之Web API控制器(新增)

發(fā)布時(shí)間:2023/12/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABP理论学习之Web API控制器(新增) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

返回總目錄


本篇目錄

  • 介紹
  • 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方法中打開(kāi)數(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è)打開(kāi)的數(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。