亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜尋
閱讀前篇 簡(jiǎn)介 Yii 是什么 從 Yii 1.1 升級(jí) 入門 安裝 Yii 運(yùn)行應(yīng)用 第一次問候 使用Forms 數(shù)據(jù)庫應(yīng)用 使用 Gii 生成代碼 進(jìn)階 應(yīng)用結(jié)構(gòu) 概述 入口腳本 應(yīng)用(Applications) 應(yīng)用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴(kuò)展(Extensions) 請(qǐng)求處理 運(yùn)行概述 啟動(dòng)引導(dǎo)(Bootstrapping) 路由和創(chuàng)建URL 請(qǐng)求(Requests) 響應(yīng)(Responses) Sessions 和 Cookies 錯(cuò)誤處理(Handling Errors) 日志(Logging) 關(guān)鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動(dòng)加載(Autoloading) 服務(wù)定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數(shù)據(jù)庫工作 數(shù)據(jù)庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動(dòng)記錄(Active Record) 數(shù)據(jù)庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數(shù)據(jù) 創(chuàng)建表單(Creating Forms) 輸入驗(yàn)證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復(fù)合表單(Getting Data for Multiple Models) 顯示數(shù)據(jù) 格式化輸出數(shù)據(jù)(Data Formatting) 分頁(Pagination) 排序(Sorting) 數(shù)據(jù)提供器(Data Providers) 數(shù)據(jù)小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認(rèn)證(Authentication) 授權(quán)(Authorization) 處理密碼(Working with Passwords) 客戶端認(rèn)證(Auth Clients) 最佳安全實(shí)踐(Best Practices) 緩存 概述 數(shù)據(jù)緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務(wù) 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(yīng)(Response Formatting) 授權(quán)認(rèn)證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯(cuò)誤處理(Error Handling) 開發(fā)工具 調(diào)試工具欄和調(diào)試器 使用Gii生成代碼 生成API文檔 測(cè)試 概述(Overview) 配置測(cè)試環(huán)境(Testing environment setup) 單元測(cè)試(Unit Tests) 功能測(cè)試(Function Tests) 驗(yàn)收測(cè)試(Acceptance Tests) 測(cè)試夾具(Fixtures) 高級(jí)專題 高級(jí)應(yīng)用模板 創(chuàng)建自定義應(yīng)用程序結(jié)構(gòu) 控制臺(tái)命令 核心驗(yàn)證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
文字

控制器

控制器

在創(chuàng)建資源類和指定資源格輸出式化后,下一步就是創(chuàng)建控制器操作將資源通過RESTful APIs展現(xiàn)給終端用戶。

Yii 提供兩個(gè)控制器基類來簡(jiǎn)化創(chuàng)建RESTful 操作的工作:yii\rest\Controller 和 yii\rest\ActiveController, 兩個(gè)類的差別是后者提供一系列將資源處理成Active Record的操作。 因此如果使用Active Record內(nèi)置的操作會(huì)比較方便,可考慮將控制器類 繼承yii\rest\ActiveController,它會(huì)讓你用最少的代碼完成強(qiáng)大的RESTful APIs.

yii\rest\Controller 和 yii\rest\ActiveController 提供以下功能,一些功能在后續(xù)章節(jié)詳細(xì)描述:

  • HTTP 方法驗(yàn)證;
  • 內(nèi)容協(xié)商和數(shù)據(jù)格式化;
  • 認(rèn)證;
  • 頻率限制.

yii\rest\ActiveController 額外提供一下功能:

  • 一系列常用操作:?index,?view,?create,?update,?delete,?options;
  • 對(duì)操作和資源進(jìn)行用戶認(rèn)證.

創(chuàng)建控制器類

當(dāng)創(chuàng)建一個(gè)新的控制器類,控制器類的命名最好使用資源名稱的單數(shù)格式,例如,提供用戶信息的控制器 可命名為UserController.

創(chuàng)建新的操作和Web應(yīng)用中創(chuàng)建操作類似,唯一的差別是Web應(yīng)用中調(diào)用render()方法渲染一個(gè)視圖作為返回值, 對(duì)于RESTful操作直接返回?cái)?shù)據(jù),yii\rest\Controller::serializer 和 yii\web\Response 會(huì)處理原始數(shù)據(jù)到請(qǐng)求格式的轉(zhuǎn)換,例如

public function actionView($id){
    return User::findOne($id);
}

過濾器

yii\rest\Controller提供的大多數(shù)RESTful API功能通過過濾器實(shí)現(xiàn). 特別是以下過濾器會(huì)按順序執(zhí)行:

  • yii\filters\ContentNegotiator: 支持內(nèi)容協(xié)商,在?響應(yīng)格式化?一節(jié)描述;
  • yii\filters\VerbFilter: 支持HTTP 方法驗(yàn)證; the?Authentication?section;
  • yii\filters\AuthMethod: 支持用戶認(rèn)證,在認(rèn)證一節(jié)描述;
  • yii\filters\RateLimiter: 支持頻率限制,在頻率限制?一節(jié)描述.

這些過濾器都在yii\rest\Controller::behaviors()方法中聲明, 可覆蓋該方法來配置單獨(dú)的過濾器,禁用某個(gè)或增加你自定義的過濾器。 例如,如果你只想用HTTP 基礎(chǔ)認(rèn)證,可編寫如下代碼:

use yii\filters\auth\HttpBasicAuth;

public function behaviors(){
    $behaviors = parent::behaviors();
    $behaviors['authenticator'] = [
        'class' => HttpBasicAuth::className(),
    ];
    return $behaviors;
}

繼承?ActiveController

如果你的控制器繼承yii\rest\ActiveController,應(yīng)設(shè)置yii\rest\ActiveController::modelClass 屬性 為通過該控制器返回給用戶的資源類名,該類必須繼承yii\db\ActiveRecord.

自定義操作

yii\rest\ActiveController 默認(rèn)提供一下操作:

  • yii\rest\IndexAction: 按頁列出資源;
  • yii\rest\ViewAction: 返回指定資源的詳情;
  • yii\rest\CreateAction: 創(chuàng)建新的資源;
  • yii\rest\UpdateAction: 更新一個(gè)存在的資源;
  • yii\rest\DeleteAction: 刪除指定的資源;
  • yii\rest\OptionsAction: 返回支持的HTTP方法.

所有這些操作通過yii\rest\ActiveController::actions() 方法申明,可覆蓋actions()方法配置或禁用這些操作, 如下所示:

public function actions(){
    $actions = parent::actions();

    // 禁用"delete" 和 "create" 操作
    unset($actions['delete'], $actions['create']);

    // 使用"prepareDataProvider()"方法自定義數(shù)據(jù)provider 
    $actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];

    return $actions;
}

public function prepareDataProvider(){
    // 為"index"操作準(zhǔn)備和返回?cái)?shù)據(jù)provider
}

請(qǐng)參考獨(dú)立操作類的參考文檔學(xué)習(xí)哪些配置項(xiàng)有用。

執(zhí)行訪問檢查

通過RESTful APIs顯示數(shù)據(jù)時(shí),經(jīng)常需要檢查當(dāng)前用戶是否有權(quán)限訪問和操作所請(qǐng)求的資源, 在yii\rest\ActiveController中,可覆蓋yii\rest\ActiveController::checkAccess()方法來完成權(quán)限檢查。

public function checkAccess($action, $model = null, $params = []){
    // 檢查用戶能否訪問 $action 和 $model
    // 訪問被拒絕應(yīng)拋出ForbiddenHttpException 
}

checkAccess()?方法默認(rèn)會(huì)被yii\rest\ActiveController默認(rèn)操作所調(diào)用,如果創(chuàng)建新的操作并想執(zhí)行權(quán)限檢查, 應(yīng)在新的操作中明確調(diào)用該方法。

提示: 可使用Role-Based Access Control (RBAC) 基于角色權(quán)限控制組件實(shí)現(xiàn)checkAccess()。
上一篇: 下一篇: