Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP的restfulweb服务_Php_Web Services_Restful Url - Fatal编程技术网

使用PHP的restfulweb服务

使用PHP的restfulweb服务,php,web-services,restful-url,Php,Web Services,Restful Url,我们的数据库中有图书id、书名、年份、价格、作者、类别等数据。我们需要使用php从数据库中检索数据。我们可以通过$\u GET方法提供url:www.localhost/books/?book id=123来检索图书id=123的图书数据。但我的要求是,当我给出url:www.localhost/books/123时,我希望看到图书id为123的图书的信息 我正在为此使用Wamp服务器 您必须为Apache启用mod_rewrite。在此之后,您可以使用如下重写规则: RewriteEngine

我们的数据库中有图书id、书名、年份、价格、作者、类别等数据。我们需要使用php从数据库中检索数据。我们可以通过$\u GET方法提供url:www.localhost/books/?book id=123来检索图书id=123的图书数据。但我的要求是,当我给出url:www.localhost/books/123时,我希望看到图书id为123的图书的信息
我正在为此使用Wamp服务器

您必须为Apache启用mod_rewrite。在此之后,您可以使用如下重写规则:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$ /$1/?id=$2
在.htaccess文件中。此规则将在内部将books/123重定向到books/?id=123


另请参见:

这里有两种方法

错误的方法: 一种可能是使用您的Web服务器提供URL重写规则,就像另一个针对ApacheWeb服务器的答案所说的那样。正如另一个答案所暗示的那样。但对于应用程序的可移植性来说,这样做是不对的,因为您的应用程序依赖于您的web服务器类型来路由URL

正确的做法: 正确的方法是执行应用程序级路由,并将web服务器的路由开销保持在尽可能低的水平。只需将web服务器指向PHP应用程序的一个入口点,如one index.PHP。这意味着一个与传入URL路径匹配的正则表达式。我建议使用一个现有的框架,提供像Laravel这样的路由功能,以防止在regex中出现任何遗漏的角落情况

例如,如果您真的想实现自己,您可以执行以下步骤:

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

到目前为止,您尝试了什么?当我不得不创建自己的时,这极大地帮助了我: