RESTful веб-сервис с использованием переполнения стека

У нас есть данные в нашей базе данных как book-id, title, year, price, author, category, Нам нужно извлечь данные из базы данных, используя php. Мы можем получить данные книги с book-id=123 давая URL: www.localhost/books/?book-id=123 через $_GET метод. Но мое требование — я хочу видеть эту информацию о книге с book-id=123 когда я даю URL: www.localhost/books/123
Я использую сервер Wamp для этого.

0

Решение

Вам нужно будет включить mod_rewrite для вашего Apache. После этого вы можете использовать правило переписывания следующим образом:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$ /$1/?id=$2

в вашем .htaccess файле. Это правило будет внутренне перенаправлять книги / 123 в книги /? Id = 123.

Смотрите также: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

0

Другие решения

Здесь есть два подхода.

Неправильный подход:
Можно использовать ваш веб-сервер для предоставления URL rewrite rules (как другой ответ говорит для Apache Web Server). Как подсказывает другой ответ. Но это не то, что нужно делать для переносимости приложения, потому что ваше приложение зависит от типа вашего веб-сервера для маршрутизации URL-адресов.

Правильный подход:
Правильный подход заключается в том, чтобы выполнять маршрутизацию на уровне приложений и максимально сократить накладные расходы на маршрутизацию к веб-серверу. Просто направьте ваш веб-сервер, чтобы он указывал на одну точку входа вашего PHP-приложения (например, одну). index.php). Это будет означать regex соответствие для входящих URL-путей. Я хотел бы предложить использовать существующую структуру, которая обеспечивает возможности маршрутизации, такие как Laravel чтобы предотвратить любые пропущенные угловые случаи в regex,

Например, если вы действительно хотите реализовать себя, то вы можете сделать следующее:

$booksRoute = /^(\/)?books(\/)?[0-9]+(\/)?$/;
route($booksRoute, function() {
// process in the closure function
});
0

По вопросам рекламы [email protected]