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

資訊專欄INFORMATION COLUMN

API后端框架Godtail2-路由組件

summerpxy / 856人閱讀

摘要:另外這個框架作為后端純框架。當前博客就是用這個組件寫的,代碼也在上。還需完善的一些地方近幾天抽空解決下自定義路由添加正則匹配。的格式換行數據內容換行數據內容最后一個目前是通過正則來解析處理的,如果設置了。使用生成臨時文件。

來自博客:神的尾巴,原文鏈接

已提交到github,路由組件代碼,代碼質量一般,大家將就著看 : )

組件思路

現在都是單入口,通過index.php配置組件,然后通過組件dispatch,來調用指定的控制器。

另外這個框架作為后端純Api框架。沒有PHP模板引擎,所有與前端的數據交互都通過json(推薦)或xml。所以要支持跨域,也要支持RESTFul風格的請求。

當前實現了的一些特性

自動調用控制器,處理請求。

專門解析參數的Param工具類。

PHP不處理PUT請求過來的參數,添加Parser工具類,有解析器FormData,Json,用來處理前端發過來的數據。包含上傳文件的解析(設置到臨時文件,對于比較小的文件直接獲取文件內容,可以自己配置)。

當前博客就是用這個組件寫的,代碼也在github上。

還需完善的一些地方(近幾天抽空解決下)

自定義路由:添加正則匹配。

例如`/article/:id`,自動配置整數,并設置到參數id。
[
    "url" => "/article/:id",
    "filter" => [
        "id" => "/d+/"
     ]
     #"controller" => "Article@detail"
     "real" => "/article/detail/:id"
]

實現過程

composer.json配置

{
    "name": "godtail/router",
    "description": "Easy router, no config, support RESTFul.",
    "license": "MIT",
    "require": {
        "php": ">=5.3.3"
    },
    "autoload": {
        "psr-4": {"GodtailRouter": "./src"}
    }
}
需要的配置
"deep" => 2, #控制器層數 
"default" => ["Index", "index"], #默認,自動補全
"namespacePre" => "Service", #控制器命名空間前綴
"classSuffix" => "Service", #控制器類名后綴
"crossDomain" => [ #跨域設置
    "allowOrigin" => "http://test.net",
    "maxAge" => "86400",
    "headers" => "Content-Type",
    "methods" => "OPTIONS, GET, PUT, POST, DELETE",
]
如何獲得比較好的URL風格

通過nginx rewrite,把匹配不到的urlrewriteindex.php?/$uri

location / {
    try_files $uri $uri/ /index.php?/$uri;
}

這樣godtail.cn/index.php?/article/tag,就可以寫成godtail.cn/article/tag

路由分層和URL參數解析

config的deep參數,用來配置路由多少層,如果功能比較簡單可以只分為2層,如果分module,則可以分成3層。

獲取URL,根據/拆分。
例如`deep=2`, `godtail.cn/article/tag/page/2`,把page設置到Params。

Params: 保存著一個靜態變量$data,用來存放請求過來的參數。
提供get,set,parse方法。
FormData的解析

如果通過POST過來的請求,PHP能夠處理,設置到$_POST或者$_FILES,但是如果是PUT請求,則需要自己處理php://input數據流

FormData的格式

------boundary--------["--"+boundary]
name=1
content-type=xxxx
[換行]
數據內容1
------boundary--------["--"+boundary]
name=2
content-type=xxxx
[換行]
數據內容2
------boundary---------[最后一個"--"+boundary+"-"]

目前是通過正則來解析處理的,如果設置了saveFile。使用tempnam生成臨時文件。

啟用
#設置配置
Router::config($config["router"]);

#dispatch
Router::dispatch();

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22011.html

相關文章

  • EggBorn.js:一款頂級Javascript全棧開發框架

    摘要:是什么是一款頂級全棧開發框架。漸進式開發由于模塊的高度內聚,可以將業務以模塊的形式沉淀,在多個項目中重復使用,既可貢獻到開源社區,也可部署到公司內部私有倉庫。模塊發布當項目中的模塊代碼穩定后,可以將模塊公開發布,貢獻到開源社區。 EggBorn.js是什么 EggBorn.js是一款頂級Javascript全棧開發框架。 EggBorn.js是采用Javascript進行全棧開發的最佳...

    dayday_up 評論0 收藏0
  • 構建前端項目

    摘要:解決思路服務器端渲染服務器端和前端公用同一個應用,然后通過構建工具及配置,確定哪些組件需要再服務器端渲染,那些組件需要再客戶端渲染。服務器端渲染,由框架與構建工具配合,并依據一定的項目結構和編碼方式,共同運行。 分離 為什么需要 前后端分離、web服務器與static服務器分離: 前端與后端耦合 (需求) 自動化、工程化的構建前端的代碼 (基礎條件) 模塊化、組件化,項目共享代碼 (...

    mindwind 評論0 收藏0
  • SPA那點事

    摘要:單頁面應用的出現依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結一下他的優缺點。單頁面應用的優勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節約瀏覽器資源,路由響應比較及時,提升了用戶的體驗。 前端猿一天不學習就沒飯吃了,后端猿三天不學習仍舊有白米飯擺于桌前。IT行業的快速發展一直在推動著前端技術棧在不斷地更新換代,前端的發展成了互聯網時代的一個縮影。而單頁面應用的發展...

    PumpkinDylan 評論0 收藏0
  • SPA那點事

    摘要:單頁面應用的出現依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結一下他的優缺點。單頁面應用的優勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節約瀏覽器資源,路由響應比較及時,提升了用戶的體驗。 前端猿一天不學習就沒飯吃了,后端猿三天不學習仍舊有白米飯擺于桌前。IT行業的快速發展一直在推動著前端技術棧在不斷地更新換代,前端的發展成了互聯網時代的一個縮影。而單頁面應用的發展...

    Lsnsh 評論0 收藏0

發表評論

0條評論

summerpxy

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<