亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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) 國(guó)際化 收發(fā)郵件 性能優(yōu)化 共享主機(jī)環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
文字

快速入門

快速入門

Yii 提供了一整套用來簡(jiǎn)化實(shí)現(xiàn) RESTful 風(fēng)格的 Web Service 服務(wù)的 API。 特別是,Yii 支持以下關(guān)于 RESTful 風(fēng)格的 API:

  • 支持?Active Record?類的通用API的快速原型
  • 涉及的響應(yīng)格式(在默認(rèn)情況下支持 JSON 和 XML)
  • 支持可選輸出字段的定制對(duì)象序列化
  • 適當(dāng)?shù)母袷降臄?shù)據(jù)采集和驗(yàn)證錯(cuò)誤
  • 支持?HATEOAS
  • 有適當(dāng)HTTP動(dòng)詞檢查的高效的路由
  • 內(nèi)置OPTIONSHEAD動(dòng)詞的支持
  • 認(rèn)證和授權(quán)
  • 數(shù)據(jù)緩存和HTTP緩存
  • 速率限制

如下, 我們用一個(gè)例子來說明如何用最少的編碼來建立一套R(shí)ESTful風(fēng)格的API。

假設(shè)你想通過 RESTful 風(fēng)格的 API 來展示用戶數(shù)據(jù)。用戶數(shù)據(jù)被存儲(chǔ)在用戶DB表, 你已經(jīng)創(chuàng)建了 yii\db\ActiveRecord 類app\models\User?來訪問該用戶數(shù)據(jù).

創(chuàng)建一個(gè)控制器

首先,創(chuàng)建一個(gè)控制器類?app\controllers\UserController?如下,

namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController{
    public $modelClass = 'app\models\User';
}

控制器類擴(kuò)展自 yii\rest\ActiveController。通過指定 yii\rest\ActiveController::modelClass 作為?app\models\User, 控制器就能知道使用哪個(gè)模型去獲取和處理數(shù)據(jù)。

配置URL規(guī)則

然后,修改有關(guān)在應(yīng)用程序配置的urlManager組件的配置:

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
    ],
]

上面的配置主要是為user控制器增加一個(gè) URL 規(guī)則。這樣, 用戶的數(shù)據(jù)就能通過美化的 URL 和有意義的 http 動(dòng)詞進(jìn)行訪問和操作。

嘗試

隨著以上所做的最小的努力,你已經(jīng)完成了創(chuàng)建用于訪問用戶數(shù)據(jù) 的 RESTful 風(fēng)格的 API。你所創(chuàng)建的 API 包括:

  • GET /users: 逐頁列出所有用戶
  • HEAD /users: 顯示用戶列表的概要信息
  • POST /users: 創(chuàng)建一個(gè)新用戶
  • GET /users/123: 返回用戶 123 的詳細(xì)信息
  • HEAD /users/123: 顯示用戶 123 的概述信息
  • PATCH /users/123?and?PUT /users/123: 更新用戶123
  • DELETE /users/123: 刪除用戶123
  • OPTIONS /users: 顯示關(guān)于末端?/users?支持的動(dòng)詞
  • OPTIONS /users/123: 顯示有關(guān)末端?/users/123?支持的動(dòng)詞

補(bǔ)充:Yii 將在末端使用的控制器的名稱自動(dòng)變?yōu)閺?fù)數(shù)。(譯注:個(gè)人感覺這里應(yīng)該變?yōu)樽⒁猓?/p>

你可以訪問你的API用curl命令如下,

$ curl -i -H "Accept:application/json" "http://localhost/users"

HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self, 
      <http://localhost/users?page=2>; rel=next, 
      <http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/json; charset=UTF-8

[
    {
        "id": 1,
        ...
    },
    {
        "id": 2,
        ...
    },
    ...
]

試著改變可接受的內(nèi)容類型為application/xml,你會(huì)看到結(jié)果以 XML 格式返回:

$ curl -i -H "Accept:application/xml" "http://localhost/users"

HTTP/1.1 200 OK
Date: Sun, 02 Mar 2014 05:31:43 GMT
Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y
X-Powered-By: PHP/5.4.20
X-Pagination-Total-Count: 1000
X-Pagination-Page-Count: 50
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://localhost/users?page=1>; rel=self, 
      <http://localhost/users?page=2>; rel=next, 
      <http://localhost/users?page=50>; rel=last
Transfer-Encoding: chunked
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?><response>
    <item>
        <id>1</id>
        ...
    </item>
    <item>
        <id>2</id>
        ...
    </item>
    ...
</response>

技巧:你還可以通過 Web 瀏覽器中輸入 URL?http://localhost/users?來訪問你的 API。 盡管如此,你可能需要一些瀏覽器插件來發(fā)送特定的 headers 請(qǐng)求。

如你所見,在 headers 響應(yīng),有關(guān)于總數(shù),頁數(shù)的信息,等等。 還有一些鏈接,讓你導(dǎo)航到其他頁面的數(shù)據(jù)。例如:http://localhost/users?page=2?會(huì)給你的用戶數(shù)據(jù)的下一個(gè)頁面。

使用?fields?和?expand?參數(shù),你也可以指定哪些字段應(yīng)該包含在結(jié)果內(nèi)。 例如:URL?http://localhost/users?fields=id,email?將只返回?id?和?email?字段。

補(bǔ)充:你可能已經(jīng)注意到了?http://localhost/users?的結(jié)果包括一些敏感字段, 例如?password_hash,?auth_key?你肯定不希望這些出現(xiàn)在你的 API 結(jié)果中。 你應(yīng)該在?響應(yīng)格式?部分中過濾掉這些字段。

總結(jié)

使用 Yii 框架的 RESTful 風(fēng)格的 API, 在控制器的操作中實(shí)現(xiàn)API末端,使用 控制器來組織末端接口為一個(gè)單一的資源類型。

從 yii\base\Model 類擴(kuò)展的資源被表示為數(shù)據(jù)模型。 如果你在使用(關(guān)系或非關(guān)系)數(shù)據(jù)庫,推薦你使用 yii\db\ActiveRecord 來表示資源。

你可以使用 yii\rest\UrlRule 簡(jiǎn)化路由到你的 API 末端。

為了方便維護(hù)你的WEB前端和后端,建議你開發(fā)接口作為一個(gè)單獨(dú)的應(yīng)用程序,雖然這不是必須的。
上一篇: 下一篇: