<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 前言 ***** ### 在使用<code>Thinkphp</code>接口開發項目的程中可能會遇到這樣的場景 + 準備將原有系統重構一遍,但是出于某種原因,老的系統在未來一段時間內必須和新的版本共存; + APP存在老版本不能強制升級,所以服務端接口需要同時兼容新老客戶端同時正常使用; + 其他更多需要新老兼容的場景 如果只是在一套接口中做特殊判斷,將會變得非常難維護。所以更好的方法是進行版本管理。本文主要分享通過URL路由方式來達到版本控制。 在實際的開發中不同的版本方法名基本上都是一樣的。以用戶注冊接口為例, 方法名都是: <code>register</code> >[success] 兩個版本通過以下url訪問,URL格式:域名/模塊名/版本號/控制器/方法名 ``` v1版本:http://www.tp5.com/api/v1/user/register v2版本:http://www.tp5.com/api/v2/user/register ``` 首先我們在<code>route.php</code>文件中定義好路由規則 ```php <?php return [ 'api/:version/:controller/:function' => 'api/:version.:controller/:function', ]; ``` 接下來看一下目錄結構 ![](https://box.kancloud.cn/e3687e23b9f58cc496be15ff58e96987_543x634.png) 其中 <code>application/api/controller/v1/User.php</code> 中文件代碼如下 ```php <?php namespace app\api\controller\v1; class User { public function register() { dump('我是v1版本的register方法'); } } ``` 其中 <code>application/api/controller/v2/User.php</code> 中文件代碼如下 ```php <?php namespace app\api\controller\v2; class User { public function register() { dump('我是v2版本的register方法'); } } ``` ## 接下來我們使用postman工具模擬請求 v1和v2版本的url ### v1版本http://www.tp5.com/api/v1/user/register ![](https://box.kancloud.cn/6d9bc1c61b16532c48f8f865ffd398d9_610x491.png) ### v2版本http://www.tp5.com/api/v2/user/register ![](https://box.kancloud.cn/0be6c461941242a784a137f978841395_545x505.png) 至此,已經完成了最簡單的通過thinkphp5路由規則實現API的版本控制,是不是非常簡單呢? > 其他API版本控制的思路 + 通過域名路由 <code>v1.api.tp5.com</code> <code>v2.api.tp5.com</code> 在<code>route.php</code>中獲取對應版本標識并路由到應控制器文件中 + 在header中傳入<code>version</code>參數,并<code>route.php</code>中獲取對應值再路由對應控制器文件中 + 直接將版本號作為參數傳入進行路由~ 實際上thinkphp的路由規則遠比想象的要強大靈活很多,建議多閱讀官方ThinkPHP5.1完全開發手冊之路由篇 http://www.hmoore.net/manual/thinkphp5_1/353960 ,希望大家可以結合自己的業務場景充分利用路由的功能讓URL更規范以及優雅,也可隱式傳入額外請求參數,讓自己的系統更加安全,優雅! ## 開發幫助及交流 如您對本文感興趣想與我聯系交流 您可以 + 郵件至:xieyongfa@ecarde.cn + QQ:2392523899 [點我聊天](http://wpa.qq.com/msgrd?v=3&uin=2392523899&site=qq&menu=yes&from=message&isappinstalled=0) + 微信交流 ![](https://box.kancloud.cn/b74285a950ce81e3cb782f02eb118d59_752x974.jpg =300x389)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看