作者:吳祐賓
Delphi WebBroker 屬於 Web 微服務的一種,自 D7 到現在的 Delphi 社群版都有此框架,挾帶著性能優異的 TDataSet 物件,將微服務提升到商業應用的等級也是分分鐘鐘的事情。
還記得那很久以前被遺忘的 RadPHP?讓我聯想到 PHP 是不是也有類似的框架,能夠將 WebBroker 的概念也套用在上頭,同時 PHP 也擁有和 ADO 概念近似的 PDO,或許可以將某些 WebBroker 專案轉到 PHP 上也說不定。
截至 2023/06,Slim 已發展到 4 版,看了一下手冊的 Hello World,感覺相當容易,結果手冊和實際設計還是有點落差,既然都為 HelloWorld Debug 過一輪了,就順手把 Slim 4 Hello World 設定過程寫下來和各位分享。
安裝
XAMPP 安裝和設定就不提了,PHP 版本資訊:
第一步:安裝 Composer
部署 Slim 4 Web Application 需要使用 Composer 進行安裝,所以要先安裝 Composer
第二步:建立網站目錄,並使用 Composer 安裝 Slim 4
建立 Slim Web Application 目錄,如 myapp,並在該目錄路徑下執行指令:
1 |
composer require slim/slim:"4.*" |
第三步:安裝 PSR-7 Implementation and ServerRequest Creator
PSR-7 套件用來處理 ServerRequest,省下我們處理它的時間,PSR-7 套件有四款:
- Slim PSR-7
- Nyholm PSR-7 and Nyholm PSR-7 Server
- Guzzle PSR-7 (Version 1 or 2)
- Laminas Diactoros
這四款只要挑選一款來安裝即可,這裡我選擇 Slim PSR-7:
1 |
composer require slim/psr7 |
Hello World
按照官方手冊的作法建立 public/index.php 檔案,程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; require __DIR__ . '/../vendor/autoload.php'; $app = AppFactory::create(); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello world!"); return $response; }); $app->run(); |
然後就出錯了:
官方手冊上就到這邊,也不知道為何會錯。詢問 ChatGPT 後,它是這樣解釋的:
這個錯誤信息表明你的Slim應用程序在處理一個HTTP請求時未能找到匹配的路由,因此拋出了一個HttpNotFoundException。這通常意味著URL路徑不匹配你在應用程序中定義的任何路由
stackoverflow 則有高手指出使用「setBasePath」就能夠排除此問題,調整之後程式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; require __DIR__ . '/../vendor/autoload.php'; $app = AppFactory::create(); $app->setBasePath("/myapp/public"); $app->get('/', function (Request $request, Response $response, $args) { $response->getBody()->write("Hello, World!"); return $response; }); $app->run(); |
透過 BasePath 和路由設定,這裡要注意不要將 index.php 寫上,如此我們就可以使用
URL:http://127.0.0.1/myapp/public/ 進行連結:
總結
Slim 官方推薦的樣板 (Slim skeleton) 在 Slim 4 下已經無法使用,要使用 Slim 4 還是從官方手冊著手會比較容易。
而且 Slim 4 的起手式已經比 Slim 3 以前還要來得簡單,作為 Web 微服務非常合適。
和你分享。