ABP文檔 - Web Api 控制器


文檔目錄

 

本節內容:

 

簡介

通過Abp.Web.Api的nuget包,把ABP集成到Asp.net Web Api 控制器里。你可以像之前做的那樣創建平常的Asp.net Web Api控制器,依賴注入會很好地為這些平常的ApiController工作,但你要把你的控制器繼承於AbpApiController,它提供了許多好處和更好地與ABP結合。

 

AbpApiController基類

這是一個簡單的繼承於AbpApiController的api控制器:

public class UsersController : AbpApiController
{

}

 

本地化

AbpApiController定義了L方法,使得本地化變得更容易,如:

public class UsersController : AbpApiController
{
    public UsersController()
    {
        LocalizationSourceName = "MySourceName";
    }

    public UserDto Get(long id)
    {
        var helloWorldText = L("HelloWorld");

        //...
    }
}

你先要設置LocalizationSourceName,L方法才能正確工作,你可以在你自己的基api控制器類里設置它,這樣就不用再為每個api控制器重復設置。

 

其它

你可以使用預先注入的AbpSessionEventBusPermissionManager、PermissionCheckerSettingManagerFeatureManager、FeatureCheckerLocalizationManagerLoggerCurrentUnitOfWork等基類屬性。

 

過濾

ABP為所有的Asp.net Web Api預置了一些過濾,它們被默認地添加到所有控制器的所有Action里。

 

審計日志

AbpApiAuditFilter用來與審計日志系統結合,它在默認情況下記錄所有對所有Action請求(如果審計沒有被禁用),你可以用Audited和DisableAuditing特性控制Action和控制器的審計日志。

 

授權

你可以為你的api控制器或Action使用AbpApiAuthorize特性,阻止未授權用戶訪問它們,例如:

public class UsersController : AbpApiController
{
    [AbpApiAuthorize("MyPermissionName")]     public UserDto Get(long id)
    {
        //...
    }
}

你可以為Action或控制器定義AllowAnonymous特性,廢止認證/授權。AbpApiController也定義了一個在定義里檢查許可的快捷方法IsGranted。

更多信息查看授權文檔。 

 

防偽造過濾

AbpAntiForgeryApiFilter自動保護Asp.net Web Api的Action(包括動態Web Api),阻止來自CSRF/XSRF的POST、PUT和DELETE請求攻擊。更多信息查看CSRF文檔

 

工作單元

AbpApiUowFilter用來結合工作單元系統,在一個Action執行前自動開始一個工作單元,並在Action執行結束后完成工作單元(如果沒有異常拋出)。

你可為一個Action使用UnitOfWork特性,控制它的工作單元行為,你也可以在啟動配置里為所有Action修改默認的工作單元特性。

 

結果包裝和異常處理

當Web Api的Action成功執行后,ABP不會默認地自動包裝它,但ABP會處理並包裝異常,如有需要,你可以給Action和控制器添加WrapResult/DontWrapResult,你可以從啟動配置里修改這個默認行為(使用Configuration.Modules.AbpWebApi()....)。關於結果包裝的更多信息,查看AJAX文檔

 

結果緩存

ABP為Web Api請求響應里添加了Cache-Control頭(no-cache,no-store),因此,它甚至會阻止瀏覽器對GET請求響應的緩存,不過可以通過配置禁用這個行為。

 

驗證

AbpApiValidationFilter自動檢查ModelState.IsValid並在檢測到非法時阻止Action執行。實現輸入DTO的驗證在驗證文檔里進行了描述。

 

模塊綁定器

AbpApiDateTimeBinder用來標准化通過Clock.Normalize方法輸入的DateTime(和Nullable<DateTime>)。

 

kid1412附:英文原文:http://www.aspnetboilerplate.com/Pages/Documents/Web-API-Controllers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM