2013-05-07 79 views
0

根据我已阅读的有关RESTful服务的内容,其中一个应该能够使用对带有记录ID的URL的请求获取“资源”(如数据库记录)最后,像这样:localhost/my_records/1。访问这样一个URL将显示一个网页,其中包含ID为1的记录信息。带有PHP的类似REST的URL

我需要在PHP/Apache/MySQL中实现类似的东西,但我对这种语言还比较陌生。我能够创建的最多的是 localhost/my_records/index.php?id = 1。

创建[“/ id”] url似乎需要创建该文件夹。有什么办法可以做到这一点?

+2

这听起来像你想做URL重写。查找Apache的mod_rewrite。一个例子就是codeigniter,它能够将http://www.mysite.com?id=1改写为http://www.mysite。com/id/1并达到相同的结果。 – Chad 2013-05-07 19:38:51

+0

[Slim Framework](http://www.slimframework.com/)可能对你很方便。 – 2013-05-07 19:56:01

回答

1

您可以使用任何种类的URL获得REST式服务,您不需要在最后使用该ID做一个URL,但是这种类型的URL更好的方便和良好的设计原则。

否则这种类型的URL也被称为“友好URL”,大多数PHP框架都提供这种类型的URL,例如Symfony,Code Igniter,Laravel ......提供此功能。

如果你想在不使用任何PHP框架此类URL,可以检查这个答案和响应How to create friendly URL in php?

在我看来,要实现良好的REST API一个很好的框架代码点火器+菲尔鲟鱼休息客户。更多信息:

+0

谢谢。 mod_rewrite完美适合我需要做的事情。我现在真的没有时间学习新的框架,所以最简单的解决方案就可以做到。我将研究更远的框架。谢谢! – tutiplain 2013-05-08 19:57:42

0

配置您的网络服务器以通过单个PHP脚本路由所有请求。这将允许您解析检索到的URL。由于您使用的是Apache mod_rewite

​​

这将路线的路径/(如果您想要的任何路由到该脚本删除线2和3)通过index.php文件不存在的文件的所有请求。在脚本中,您可以通过以下方式访问访问的URL:$_SERVER['REQUEST_URL']

+0

谢谢!不过,我仍然需要学习正则表达式。 – tutiplain 2013-05-08 19:58:55

0

从本质上说,你在找什么是通常被称为请求路由东西。通常这是通过在服务器级别和应用程序级别的配置组合来实现的。

  • 某种服务器重定向(使用重写规则或FallBackResource指令),它会将所有的请求(或某种形式的请求),以单一的应用程序资源是处理它。
  • 解析URI和HTTPS操作(GET,POST,PUT,DELETE,HEAD等)并确定如何路由请求(即哪个控制器应该处理它)的应用程序逻辑
  • 通常情况下有某种根据请求标题中请求的格式(即JSON/XML/HTML)格式化响应的逻辑

有许多PHP框架可用于执行此操作,至少您可以寻找指导如果不是完全使用它们)。