1. 程式人生 > >ABP官方文件(二十九)【Web API Controllers】

ABP官方文件(二十九)【Web API Controllers】

5.1 ABP分散式服務 ASP.NET Web API Controllers

5.1.1 簡介

ABP已經把 ASP.NET Web API Controllers 整合到了 Abp.Web.Api,你只要通過Nuget安裝它。正如你一直那樣做得,你可以建立常規的ASP.NET Web API Controllers,
依賴注入可以解析常規的ApiControllers。

為了能夠享受使用ABP.Web.Api帶來的便利,應該使你的controllers派生自 AbpApiController

5.1.2 AbpApiController 基類

下面是一個簡單的派生自AbpApiController的示例程式碼:

public class UsersController : AbpApiController
{

}

1. 本地化

為了使本地化更容易,在AbpApiController中定義了一個方法:L
如下所示:

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

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

為了能夠使用 L 方法,首先我們應該初始化 LocalizationSourceName。當然,為了不重複初始化該變數,我們可以定義一個繼承自AbpApiController的基類,在該類中初始化它,以後所有的Controller類都繼承自該基類。

2. 其他

你也可以(pre-inijected)預先注入 AbpSession, EventBus, PermissionManager, PermissionChecker, SettingManager, FeatureManager, FeatureChecker, LocalizationManager, Logger, CurrentUnitOfWork 等基礎屬性。

3. 過濾器

ABP為ASP.NET Web API定義了一些預先構建的過濾器。預設它們被新增到了所有控制器的所有Action。

4. 審計日誌

對於審計日誌我們可以使用過濾器:AbpApiAuditFilter。它預設記錄請求到所有Actions的日誌(如果審計沒有禁用)。你可以使用特性 Audited 和 DisableAuditing 來控制控制器的Action是否記錄日誌。

你可以用AbpApiAuthorize特性來阻止未授權的使用者來訪問你的Controllers和Actions。
示例如下:

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

你可以對Action或者控制器來使用 AllowAnonymous 特性來禁用身份認證/授權。
AbpApiController也定義了一個快速檢測許可權的方法 IsGranted
詳情請參照authorization

6. 反偽造過濾器

對於POST,PUT以及DELETE的CSRF/XSRF攻擊請求,我們可以使用 AbpAntiForgeryApiFilter 來保護ASP.NET WEB API Actions(包括動態Web Api)。詳細瞭解請參考CSRF文件

7. 工作單元

對於工作單元,我們可以使用 AbpApiUowFilter 過濾器。它會在Action執行之前自動的開啟一個新的工作單元,在Action執行之後完成該工作單元(如果沒有異常丟擲)。

你可以使用 UnitOfWork 特性來控制某個Action的UOW行為。你也可以在啟動配置中對所有的Action改變其預設的工作單元特性。

8. 包裝返回結果&異常處理

如果action執行成功,ABP 預設 沒有對Web API的actions的返回結果進行包裝。但是,它對 異常進行了處理和包裝。如果需要,你可以新增 WrapResult/DontWrapResult 到actions和控制器上。你可以從啟動配置中改變這個預設行為(使用: Configuration.Modules.AbpWebApi()…)。關於對結果包裝的瞭解請參考AJAX文件

9. 快取結果

對於Web API請求,ABP添加了 Cache-Control 頭(no-cache, no-store)的響應。因此,它阻止瀏覽器對響應的快取,即使該請求是GET請求。該行為可以在配置中被禁用。

10. 驗證

AbpApiValidationFilter 過濾器自動的檢查 ModelState.IsValid 並且阻止action的執行,如果該action沒有通過驗證。同時,實現了input DTO 的驗證,詳細瞭解請閱讀資料傳輸物件驗證

11. 模型繫結

AbpApiDateTimeBinder 過濾器被用來標準化DateTime(以及Nullable\

相關推薦

ABP官方()Web API Controllers

5.1 ABP分散式服務 ASP.NET Web API Controllers 5.1.1 簡介 ABP已經把 ASP.NET Web API Controllers 整合到了 Abp.Web.Api,你只要通過Nuget安裝它。正如你一直那樣做得,你

ABP官方(四)資料傳輸物件

4.2 ABP應用層 - 資料傳輸物件 資料傳輸物件(Data Transfer Objects)用於應用層和展現層的資料傳輸。 展現層傳入資料傳輸物件(DTO)呼叫一個應用服務方法,接著應用服務通過領域物件執行一些特定的業務邏輯並且返回DTO給展現層。這樣

ABP官方(五)資料傳輸物件驗證

4.3 ABP應用層 - 資料傳輸物件驗證 應用程式的輸入首先應該被驗證是否有效。輸入的資料能夠被使用者或者其它應用傳送。在web應用中,驗證通常被實現兩次:客戶端和伺服器端。客戶端驗證的實現主要用於使用者體驗。首先,最好是在客戶端檢驗表單並且向用戶展示無效的

ABP官方(三七)Javascript API

6.6 ABP表現層 - Javascript API 6.6.1 簡介 ABP提供了一系列的物件和函式,使用這些物件和函式使得指令碼開發更容易且標準化。 下面是ABP中的指令碼API列表。點選標題可以看到詳細的使用手冊。 使用AJAX呼叫伺

ABP官方(三八)AJAX API

6.6 ABP表現層 - AJAX API 6.6.2.1 AJAX操作問題 現代的應用經常會使用AJAX,尤其是單頁應用,幾乎是和伺服器通訊的唯一手段,執行AJAX通常會有以下步驟: 基本上:為了執行一個AJAX呼叫,首先你要在客戶端提供一個可供請

ABP官方(三五)導航欄

6.4 ABP表現層 - 導航欄 每一個WEB應用程式都有導航選單,Abp也為使用者提供了通用的建立和顯示選單方式。 6.4.1 建立選單 一個應用程式可能包含不同的模組,而每個模組都可能有它自己的選單項。在Abp中,需要建立一個派生自Navigati

ABP官方(三六)異常處理

6.5 ABP表現層 - 異常處理 6.5.1 簡介 該文件只是針對ASP.NET MVC 以及Web API。如果你對ASP.NET Core也感興趣,請參考ASP.NET Core文件。 在 web 應用程式中,異常通常是在 MVC Con

ABP官方(四)CSRF和XSRF保護

6.9 CSRF和XSRF保護 6.9.1 簡介 Cross-Site Request Forgery (CSRF) 跨站請求偽造是一種攻擊,發生在具有惡意的網站,email,blog,即時訊息,或者程式導致使用者的web瀏覽器在一個受信用的網站去執行了

ABP官方(十三)應用服務

4.1 ABP應用層 - 應用服務 應用服務用於將領域(業務)邏輯暴露給展現層。展現層通過傳入DTO(資料傳輸物件)引數來呼叫應用服務,而應用服務通過領域物件來執行相應的業務邏輯並且將DTO返回給展現層。因此,展現層和領域層將被完全隔離開來。在一個理想的層級專

ABP官方(七)倉儲

3.3 ABP領域層 - 倉儲 倉儲定義:“在領域層和資料對映層的中介,使用類似集合的介面來存取領域物件”(Martin Fowler)。 實際上,倉儲被用於領域物件在資料庫上的操作(實體Entity和值物件Value types)。一般來說,我們針對不同的

AutoMapper官方()升級指南

初始化 您現在必須使用Mapper.Initialize或new MapperConfiguration()來初始化AutoMapper。如果您希望保持靜態使用,請使用Mapper.Initialize。 如果你有很多的Mapper.CreateMap呼叫,把它們移動到一個Profile,或者Mapper

ABP官方(一)入門介紹

1.1 ABP總體介紹 - 入門介紹 ABP是“ASP.NET Boilerplate Project (ASP.NET樣板專案)”的簡稱。 ASP.NET Boilerplate是一個用最佳實踐和流行技術開發現代WEB應用程式的新起點,它旨在成為一個通用的

ABP官方(十三)物件之間的對映

2.7 ABP公共結構 - 物件之間的對映 2.7.1 簡介 我們通常需要在近似的物件之間進行對映處理。這是一個重複且枯燥無味的工作,通常來說兩個需要相互對映的物件之間有近似的或者相同的屬性。思考一下這樣一個案例:應用服務的方法: public c

ABP官方(五)多租戶

1.5 ABP總體介紹 - 多租戶 1.5.1 什麼是多租戶 維基百科:“軟體多租戶是指一個軟體架構的例項軟體執行在一個伺服器上,但存在多個租戶。租戶是一組共享一個公共的使用者訪問特定許可權的軟體例項。多租戶架構,軟體應用程式旨在提供每個租戶專用的例項包

Expo大作戰()--expo sdk api之registerRootComponent(註冊跟組),ScreenOrientation(屏幕切換),SecureStore,

修改 使用 pass con Go rip shared package api 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我

OpenCV-Python 官方

開始使用視訊 目標 學習讀取視訊,顯示視訊並且儲存視訊。 學會從視訊中捕獲並顯示。 你將會學到這些方法:cv2.VideoCapture() cv2.VideoWriter()  從照相機捕獲視訊 通常,我們必須用相機捕捉實時流。OpenCV

Android [Camera 原始碼] 版本支援(Version Support) Google官方四)

Google原始碼網地址連結:https://source.android.com/devices/camera 該Google Camera的文件為系列文章,文章列表: overview Camera3 HAL Subsystem Metadata and Con

Adopt Open JDK官方

編譯過程效能優化的命令列引數 AdoptOpenJDK wiki的一個連結,提供了幾個怎麼提高編譯過程效能的例子。 編譯 jcov 專案首頁(專案資訊, 編譯指南, 其他…) 原始碼: 快速編譯指南 $ hg clone http://hg.openjdk.java.net/code

Adopt Open JDK官方()如何使用導航和取得進步?

譯文地址    2.如何使用導航和取得進步? 在黑客日和講習班開始之前我需要做些什麼呢? 來之前你應該準備好你的膝上型電腦並搭建好當天需要的環境: 檢查硬體要求/作業系統/軟體要求 下載支撐軟體 搭建或者下載虛擬機器 搭建或者下載Docker映象 檢查虛擬機器和Docker映象是否正常工作

ESP32 官方四)RF 校準

RF 校準 RF 校準 部分校準 完全校準 沒有校準 PHY 初始化資料 RF 校準 ESP32 在 RF 初始化期間支援三種 RF 校準方法: 部分校準 完全校準 沒有校