Я новичок в создании 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();
?>
Это прекрасно работает, если я загружаю URL http://localhost:8080/rest/v1/fname/Test
через браузер и выдает вывод
Привет, Тест
Однако пробовать его с помощью REST Easy plugin предоставляет эту ошибку
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
Почему это происходит? Что я здесь делаю неправильно?
$app->get('/fname/:name', function ($name) {
Это будет соответствовать URL-адресам, например /fname/test
и /fname/foo
, но не /fname?test=bar
Вы использовали только URL /fname
в своем плагине REST. У вас нет подходящего маршрута для этого. Чтобы исправить это, вызовите /fname/test/
из вашего плагина или создайте соответствующий маршрут.
Параметры GET имеют ключ и значение (?foo=bar
приведет к массиву с ключом foo
и bar
значений). Поэтому не имеет смысла, что ваш :name
соответствует параметру GET. Что бы он выбрал, ключ или ценность? И что, если их несколько?