国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Yii2.0 RESTful API 基礎(chǔ)配置教程

fyber / 2528人閱讀

這篇說下yii2.0開發(fā) API 吧,使用 RESTful API模式

安裝Yii2.0 通過 Composer 安裝

這是安裝Yii2.0的首選方法。如果你還沒有安裝 Composer,你可以按照這里的說明進(jìn)行安裝。

安裝完 Composer,運(yùn)行下面的命令來安裝 Composer Asset 插件:

</>復(fù)制代碼

  1. php composer.phar global require "fxp/composer-asset-plugin:^1.2.0"

安裝高級(jí)的應(yīng)用程序模板,運(yùn)行下面的命令:

</>復(fù)制代碼

  1. php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.13
初始化高級(jí)模板

</>復(fù)制代碼

  1. cd advanced
  2. init
修改數(shù)據(jù)庫連接屬性

打開 commonconfigmain-local.php,配置數(shù)據(jù)庫連接信息

</>復(fù)制代碼

  1. "db" => [
  2. "class" => "yiidbConnection",
  3. "dsn" => "mysql:host=127.0.0.1;dbname=yiiapi",
  4. "username" => "root",
  5. "password" => "root",
  6. "charset" => "utf8",
  7. ],
執(zhí)行 migrate 數(shù)據(jù)庫遷移

</>復(fù)制代碼

  1. yii migrate
拷貝backend目錄,命名為api

打開apiconfigmain.php 修改id,controllerNamespace

</>復(fù)制代碼

  1. return [
  2. "id" => "app-api",
  3. "basePath" => dirname(__DIR__),
  4. "controllerNamespace" => "apicontrollers",
  5. ]

打開commonconfigmain.php開啟url路由美化規(guī)則

</>復(fù)制代碼

  1. "urlManager" => [
  2. "enablePrettyUrl" => true,
  3. "showScriptName" => false,
  4. "rules" => [
  5. ],
  6. ],

打開commonconfigootstrap.php添加以下別名

</>復(fù)制代碼

  1. Yii::setAlias("@api", dirname(dirname(__DIR__)) . "/api");
配置 Web 服務(wù)器

很多同學(xué)在看了我這個(gè)教程,說是運(yùn)行不起來、一直是404,然后就問我為什么?我看了好多,他們都是本地使用 Apache ,并且 index.php 文件沒有隱藏,他們?cè)L問地址也不叫 index.php。所以在此說明一下吧

Apache 配置

</>復(fù)制代碼

  1. # 設(shè)置文檔根目錄為 "path/to/api/web"
  2. DocumentRoot "path/to/api/web"
  3. # 開啟 mod_rewrite 用于美化 URL 功能的支持(譯注:對(duì)應(yīng) pretty URL 選項(xiàng))
  4. RewriteEngine on
  5. # 如果請(qǐng)求的是真實(shí)存在的文件或目錄,直接訪問
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. # 如果請(qǐng)求的不是真實(shí)文件或目錄,分發(fā)請(qǐng)求至 index.php
  9. RewriteRule . index.php
  10. # if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
  11. RewriteRule ^index.php/ - [L,R=404]
  12. # ...其它設(shè)置...

或者 在web 目錄下新建一個(gè) .htaccess 文件,填入以下內(nèi)容(我這是從 Laravel 項(xiàng)目中拷貝過來的),同樣可以起到隱藏 index.php 的效果

</>復(fù)制代碼

  1. Options -MultiViews -Indexes
  2. RewriteEngine On
  3. # Handle Authorization Header
  4. RewriteCond %{HTTP:Authorization} .
  5. RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  6. # Redirect Trailing Slashes If Not A Folder...
  7. RewriteCond %{REQUEST_FILENAME} !-d
  8. RewriteCond %{REQUEST_URI} (.+)/$
  9. RewriteRule ^ %1 [L,R=301]
  10. # Handle Front Controller...
  11. RewriteCond %{REQUEST_FILENAME} !-d
  12. RewriteCond %{REQUEST_FILENAME} !-f
  13. RewriteRule ^ index.php [L]

Nginx 的配置

</>復(fù)制代碼

  1. location / {
  2. # Redirect everything that isn"t a real file to index.php
  3. try_files $uri $uri/ /index.php$is_args$args;
  4. }
為什么要多帶帶創(chuàng)建API應(yīng)用

多帶帶創(chuàng)建API應(yīng)用,目的是便于維護(hù),可以避免以下問題

配置的沖突

控制器的命名不便

url美化規(guī)則沖突

分工明確frontend為前臺(tái)目錄;backend為后臺(tái)目錄;api為api目錄

接下來打開 apicontrollers 新建一個(gè)User控制器,繼承 yii estActiveController,命名為 UserController,代碼如下:

</>復(fù)制代碼

  1. 這里創(chuàng)建 user控制器繼承 yii

  2. estActiveController 并指定要操作的模型

  3. 啟用JSON 輸入
  4. 配置 request 應(yīng)用程序組件的 parsers 屬性使用 yiiwebJsonParser 用于 JSON 輸入

  5. 打開配置文件 apiconfigmain-local.php 修改為如下代碼:

  6. </>復(fù)制代碼

    1. [
    2. "request" => [
    3. // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
    4. "cookieValidationKey" => "P0r2XoT9LCUnyVlSgxBbJOqQxdCJ3i29",
    5. "parsers" => [
    6. "application/json" => "yiiwebJsonParser",
    7. ],
    8. ],
    9. ],
    10. ];
    11. if (!YII_ENV_TEST) {
    12. // configuration adjustments for "dev" environment
    13. $config["bootstrap"][] = "debug";
    14. $config["modules"]["debug"] = [
    15. "class" => "yiidebugModule",
    16. ];
    17. $config["bootstrap"][] = "gii";
    18. $config["modules"]["gii"] = [
    19. "class" => "yiigiiModule",
    20. ];
    21. }
    22. return $config;
  7. 配置URL規(guī)則
  8. 為剛才的 user控制器添加url美化規(guī)則

  9. 打開 apiconfigmain.php 修改 components屬性,添加下列代碼:

  10. </>復(fù)制代碼

    1. ...
    2. "urlManager" => [
    3. "enablePrettyUrl" => true,
    4. "enableStrictParsing" => true,
    5. "showScriptName" => false,
    6. "rules" => [
    7. ["class" => "yii
    8. estUrlRule",
    9. "controller" => "user"
    10. ],
    11. ],
    12. ]
    13. ...
  11. ok,到此就成了一個(gè) 符合 RESTful 風(fēng)格的API
    看起來在控制器了什么也沒有寫,只是指定了一個(gè)模型,但是她的背后完成了很多的功能哦,列表如下:

  12. GET /users: 逐頁列出所有用戶

  13. HEAD /users: 顯示用戶列表的概要信息

  14. POST /users: 創(chuàng)建一個(gè)新用戶

  15. GET /users/123: 返回用戶 123 的詳細(xì)信息

  16. HEAD /users/123: 顯示用戶 123 的概述信息

  17. PATCH /users/123: and PUT /users/123: 更新用戶123

  18. DELETE /users/123: 刪除用戶123

  19. OPTIONS /users: 顯示關(guān)于末端 /users 支持的動(dòng)詞

  20. OPTIONS /users/123: 顯示有關(guān)末端 /users/123 支持的動(dòng)詞

  21. 如何訪問呢
  22. 你可以使用 curl命令進(jìn)行訪問,命令如下:

  23. </>復(fù)制代碼

    1. curl -i -H "Accept:application/json" "http://localhost/users"
  24. 命令行下還是比較麻煩的,也不方便測(cè)試,推薦使用 API測(cè)試工具

  25. 這類的工具有很多,我就不一一列舉了,這里推薦 Postman,很好很強(qiáng)大,Chorme也有插件,可以安裝,這里我推薦直接下載軟件安裝調(diào)試,比較方便

  26. 你可能發(fā)現(xiàn)了 訪問任何路由地址都是加的s,users , 為什么呢? 資源,你要理解 資源二字,既然是資源肯定是個(gè)集合,肯定有一大堆,所以要加上復(fù)數(shù),我是這么理解的。

  27. 你說我就是不想加上s,我就想采用http://localhost/user 這種方式來進(jìn)行訪問,好吧,可以,滿足你,只是不推薦

  28. 繼續(xù)打開配置文件apiconfigmain.php修改剛才添加的 urlManager 如下:

  29. </>復(fù)制代碼

    1. "urlManager" => [
    2. "enablePrettyUrl" => true,
    3. "enableStrictParsing" => true,
    4. "showScriptName" => false,
    5. "rules" => [
    6. ["class" => "yii
    7. estUrlRule",
    8. "controller" => "user",
    9. "pluralize" => false, //設(shè)置為false 就可以去掉復(fù)數(shù)形式了
    10. ],
    11. ],
    12. ]
  30. 加入 "pluralize" => false, 就表示去掉復(fù)數(shù)形式了,再次強(qiáng)調(diào)不推薦

  31. ok,在控制器中我們沒有寫任何一句代碼,他就給我們生成許多方法,但是有時(shí)候我們可能需要修改一些代碼,來達(dá)到我們想要的效果,比如連表查詢,然后再返回?cái)?shù)據(jù)

  32. 接下來我們就實(shí)現(xiàn)這樣的功能:

  33. 打開剛才新建的user控制器, 重寫 action方法:

  34. </>復(fù)制代碼

    1. 這樣我們就可以重寫他的代碼了。哈哈

    2. 我們?cè)傩陆ㄒ粋€(gè)自己的 action

    3. </>復(fù)制代碼

      1. 然后試著訪問一下 http://localhost/users/send-email,報(bào)錯(cuò)?找不到?

      2. 報(bào)錯(cuò)就對(duì)了,那是因?yàn)槲覀儧]有設(shè)置其他路由訪問

      3. 修改 apiconfigmain.php

      4. </>復(fù)制代碼

        1. "urlManager" => [
        2. "enablePrettyUrl" => true,
        3. "enableStrictParsing" => true,
        4. "showScriptName" => false,
        5. "rules" => [
        6. ["class" => "yii
        7. estUrlRule",
        8. "controller" => "user",
        9. //"pluralize" => false, //設(shè)置為false 就可以去掉復(fù)數(shù)形式了
        10. "extraPatterns"=>[
        11. "GET send-email"=>"send-email"
        12. ],
        13. ],
        14. ],
        15. ]
      5. 接下來重新訪問就沒有問題了,ps:你自己編寫的任何 action 都要在 extraPatterns 進(jìn)行配置

      6. 差點(diǎn)忘了 狀態(tài)碼 這個(gè)東西,我們現(xiàn)在所有的東西返回來的都是一個(gè) JSON,加入沒有數(shù)據(jù)局返回的是空的數(shù)組,所以這肯定不行啊,我們得加上 一些特定的狀態(tài)碼 來標(biāo)識(shí)這些數(shù)據(jù)啊,怎么加?

      7. 繼續(xù)修改 apiconfigmain.phpcomponents 添加如下代碼:

      8. </>復(fù)制代碼

        1. "response" => [
        2. "class" => "yiiwebResponse",
        3. "on beforeSend" => function ($event) {
        4. $response = $event->sender;
        5. $response->data = [
        6. "success" => $response->isSuccessful,
        7. "code" => $response->getStatusCode(),
        8. "message" => $response->statusText,
        9. "data" => $response->data,
        10. ];
        11. $response->statusCode = 200;
        12. },
        13. ],
      9. 這里統(tǒng)一使用 200來表示,當(dāng)然并不是所有的都是 200,你應(yīng)該具體情況具體對(duì)待,切記不要亂使用 任意加各種標(biāo)識(shí),請(qǐng) 遵循這些 規(guī)范 狀態(tài)碼

      10. 是不是覺得還少了點(diǎn)什么?認(rèn)證 對(duì)就是 認(rèn)證,就差 認(rèn)證 就完美了,篇幅有限,內(nèi)容多了反而影響閱讀興趣,下篇進(jìn)行 認(rèn)證介紹

      11. 感謝以下,特別是 魏曦老師的視頻教程

      12. 魏曦教你學(xué)

      13. Yii Framework 2.0 權(quán)威指南

      14. 不足之處,歡迎指正

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/30853.html

相關(guān)文章

  • Yii2.0 RESTful API 基礎(chǔ)配置教程[轉(zhuǎn)載]

    摘要:最近在做功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 最近在做Yii2.0 RESTful API功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。 安裝yii2.0 安裝 Composer 后,您可以通過在 Web 可訪問的文件夾下運(yùn)行以下命令來 安裝Yii應(yīng)用程序模板: compose...

    xorpay 評(píng)論0 收藏0
  • Yii2.0 RESTful API 之速率限制

    摘要:之速率限制什么是速率限制權(quán)威指南翻譯過來為限流,為防止濫用,你應(yīng)該考慮對(duì)您的限流。如果在規(guī)定的時(shí)間內(nèi)接收了一個(gè)用戶大量的請(qǐng)求,將返回響應(yīng)狀態(tài)代碼這意味著過多的請(qǐng)求。 Yii2.0 RESTful API 之速率限制 什么是速率限制? 權(quán)威指南翻譯過來為限流,為防止濫用,你應(yīng)該考慮對(duì)您的 API 限流。 例如,您可以限制每個(gè)用戶 10 分鐘內(nèi)最多調(diào)用 API 100 次。 如果在規(guī)定的時(shí)...

    LeviDing 評(píng)論0 收藏0
  • Yii2.0 RESTful API 之版本控制

    摘要:之版本控制之前我寫過兩篇關(guān)于如何搭建,以及認(rèn)證等處理,但是沒有涉及到版本管理,今天就來談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。如果你還沒有安裝,你可以按照這里的說明進(jìn)行安裝。 Yii2.0 RESTful API 之版本控制 之前我寫過兩篇關(guān)于 Yii2.0 RESTful API 如何搭建,以及 認(rèn)證 等處理,但是沒有涉及到版本管理,今天就來談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。 索性就從頭開始一步一步搭建吧,但是關(guān)...

    _ang 評(píng)論0 收藏0
  • Yii2.0 RESTful API 認(rèn)證教程

    摘要:請(qǐng)求參數(shù)當(dāng)作請(qǐng)求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會(huì)保存請(qǐng)求參數(shù)到日志,這種方式應(yīng)主要用于請(qǐng)求,因?yàn)樗荒苁褂妙^來發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 認(rèn)證介紹 和Web應(yīng)用不同,RESTful APIs 通常是無狀態(tài)的, 也就意味著不應(yīng)使用 sessions 或 cookies, 因此每個(gè)請(qǐng)求應(yīng)附帶某種授權(quán)憑證,因?yàn)橛脩羰跈?quán)狀態(tài)可能沒通過 sessions ...

    JohnLui 評(píng)論0 收藏0
  • Yii2.0 RESTful API 認(rèn)證教程【令牌驗(yàn)證】

    摘要:最近在做認(rèn)證功能,記錄整個(gè)過程,方便以后查看。請(qǐng)求參數(shù)當(dāng)作請(qǐng)求參數(shù)發(fā)送,例如,由于大多數(shù)服務(wù)器都會(huì)保存請(qǐng)求參數(shù)到日志,這種方式應(yīng)主要用于請(qǐng)求,因?yàn)樗荒苁褂妙^來發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過發(fā)送到服務(wù)器。 最近在做RESTful API認(rèn)證功能,記錄整個(gè)過程,方便以后查看。本文參照了 https://segmentfault.com/a/119000001636860...

    X1nFLY 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<