亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

xorpay / 3255人閱讀

摘要:最近在做功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。

最近在做Yii2.0 RESTful API功能,找了好久的資料,才找到這類的教程,感謝該作者,以下內(nèi)容根據(jù)我的項(xiàng)目實(shí)際情況做了一定的修改。

安裝yii2.0

安裝 Composer 后,您可以通過(guò)在 Web 可訪問(wèn)的文件夾下運(yùn)行以下命令來(lái) 安裝Yii應(yīng)用程序模板:

composer create-project --prefer-dist yiisoft/yii2-app-basic basic
初始化高級(jí)模板
cd advanced
./init
輸入"./init"后會(huì)出現(xiàn)以下內(nèi)容
Yii Application Initialization Tool v1.0

Which environment do you want the application to be initialized in?

  [0] Development
  [1] Production

  Your choice [0-1, or "q" to quit] 0

  Initialize the application under "Development" environment? [yes|no] yes

  Start initialization ...
修改數(shù)據(jù)庫(kù)連接屬性

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

"db" => [
            "class" => "yiidbConnection",
            "dsn" => "mysql:host=127.0.0.1;dbname=yii",
            "username" => "root",
            "password" => "root",
            "charset" => "utf8",
        ],
執(zhí)行 migrate 數(shù)據(jù)庫(kù)遷移
./yii migrate
拷貝backend目錄,命名為api

打開apiconfigmain.php 修改id,controllerNamespace等,將所有backend替換為api

return [
    "id" => "app-api",
    "basePath" => dirname(__DIR__),
    "controllerNamespace" => "apicontrollers",
]

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

"urlManager" => [
            "enablePrettyUrl" => true,
            "showScriptName" => false,
            "rules" => [
            ],
        ],

打開commonconfigootstrap.php添加以下別名

Yii::setAlias("@api", dirname(dirname(__DIR__)) . "/api");
為什么要多帶帶創(chuàng)建API應(yīng)用

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

配置的沖突

控制器的命名不便

url美化規(guī)則沖突

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

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


配置URL規(guī)則

為剛才的 user控制器添加url美化規(guī)則
打開 apiconfigmain.php 修改 components屬性,添加下列代碼:

...
"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => true,
    "showScriptName" => false,
    "rules" => [
        ["class" => "yii
estUrlRule", 
        "controller" => "user"
        ],
    ],
]

...

ok,到此就成了一個(gè) 符合 RESTful 風(fēng)格的API
看起來(lái)在控制器了什么也沒(méi)有寫,只是指定了一個(gè)模型,但是她的背后完成了很多的功能哦,列表如下:

GET /users: 逐頁(yè)列出所有用戶

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)詞

如何訪問(wèn)呢

你可以使用 curl命令進(jìn)行訪問(wèn),命令如下:

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

命令行下還是比較麻煩的,也不方便測(cè)試,推薦使用 API測(cè)試工具

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

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

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

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

"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => true,
    "showScriptName" => false,
    "rules" => [
        ["class" => "yii
estUrlRule", 
        "controller" => "user",
        "pluralize" => false,    //設(shè)置為false 就可以去掉復(fù)數(shù)形式了
        ],
    ],
]

加入 "pluralize" => false, 就表示去掉復(fù)數(shù)形式了,再次強(qiáng)調(diào)不推薦

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

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

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


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

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


然后試著訪問(wèn)一下 http://localhost/users/test,報(bào)錯(cuò)?找不到?

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

修改 apiconfigmain.php

"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => true,
    "showScriptName" => false,
    "rules" => [
        ["class" => "yii
estUrlRule", 
        "controller" => "user",
        //"pluralize" => false,    //設(shè)置為false 就可以去掉復(fù)數(shù)形式了
        "extraPatterns"=>[
            "GET send-email"=>"test"
        ],
        ],
    ],
]

接下來(lái)重新訪問(wèn)就沒(méi)有問(wèn)題了,ps:你自己編寫的任何 action 都要在 extraPatterns 進(jìn)行配置

再次感謝以下:

https://segmentfault.com/a/11...

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/29827.html

相關(guān)文章

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

    這篇說(shuō)下yii2.0開發(fā) API 吧,使用 RESTful API模式 安裝Yii2.0 通過(guò) Composer 安裝 這是安裝Yii2.0的首選方法。如果你還沒(méi)有安裝 Composer,你可以按照這里的說(shuō)明進(jìn)行安裝。 安裝完 Composer,運(yùn)行下面的命令來(lái)安裝 Composer Asset 插件: php composer.phar global require fxp/composer-a...

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

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

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

    摘要:之版本控制之前我寫過(guò)兩篇關(guān)于如何搭建,以及認(rèn)證等處理,但是沒(méi)有涉及到版本管理,今天就來(lái)談?wù)劙姹竟芾砣绾螌?shí)現(xiàn)。如果你還沒(méi)有安裝,你可以按照這里的說(shuō)明進(jìn)行安裝。 Yii2.0 RESTful API 之版本控制 之前我寫過(guò)兩篇關(guān)于 Yii2.0 RESTful API 如何搭建,以及 認(rèn)證 等處理,但是沒(méi)有涉及到版本管理,今天就來(lái)談?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)樗荒苁褂妙^來(lái)發(fā)送使用者從認(rèn)證服務(wù)器上獲取基于協(xié)議的,然后通過(guò)發(fā)送到服務(wù)器。 認(rèn)證介紹 和Web應(yīng)用不同,RESTful APIs 通常是無(wú)狀態(tài)的, 也就意味著不應(yīng)使用 sessions 或 cookies, 因此每個(gè)請(qǐng)求應(yīng)附帶某種授權(quán)憑證,因?yàn)橛脩羰跈?quán)狀態(tài)可能沒(méi)通過(guò) sessions ...

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

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

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

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

0條評(píng)論

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