我是构建restful php应用程序的新手,因此尝试一些简单的东西就是我的php代码
<?php
require '../Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->get('/fname/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
?>
如果我通过浏览器加载网址http://localhost:8080/rest/v1/fname/Test
并提供输出
您好,测试
然而,使用REST Easy插件进行尝试会提供此错误
Status
404 Not Found
Headers
Name Value
Date Wed, 05 Nov 2014 10:51:02 GMT
Server Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.5.15
X-Powered-By PHP/5.5.15
Content-Length 524
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html
为什么会这样?我在这里做错了什么?
答案 0 :(得分:0)
$app->get('/fname/:name', function ($name) {
这会匹配/fname/test
和/fname/foo
等网址,但不匹配/fname?test=bar
您在REST插件中仅使用了URL /fname
。您没有匹配的路线。因此,要解决此问题,请从插件中调用/fname/test/
或创建匹配的路由。
GET参数有一个键和一个值(?foo=bar
将产生一个带有键foo
和值bar
的数组。因此,:name
与GET参数匹配是没有意义的。它会选择什么,关键还是价值?哪个,如果有多个?