我读了很多宁静的教程PHP.

(我不想去深入成为什么我不是使用退休.这是由于团队更加熟悉PHP)

因为我们规划未来的扩展到具有Api我读,重要的是要实现宁静的网服务。

我已经看过教程,例如

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

显然宁静,是为web服务.

什么有关网页?他们可以宁静吗?

如果答案是否定的,请不要超越这条线和刚刚告诉我的。谢谢你。

我知道,使该网址看起来像宁静的网址是简单地使用mod_rewrite.但是,我相当肯定的,舒适的建筑超越了仅仅使得网址看起来不错。

例如,我有一个项目列表网页上称为list.php .每个项目都有一个删除链接。E.g., 名单。php?id=1&"删除项"

会发生什么情况是,当某人点击的名单上。php?id=1&"删除项"的链接,当然我回去的相同的list.php 文件和检查param"删除项"in$_GET.

如果检测,然后,我会从数据库中删除基于param id in$_GET.

在这之后,我将回到list.php 没有任何参数。

我不知道,我怎么做这个流宁静?

我问是因为在休息,使删除的东西你需要使用HTTP请求的方法(删除)。

显然,在我的链接,他们都只是简单的 <a href="list.php?id=1&deleteitem">Delete</a>

请告诉我。

我编程是不得强大,它会好的,如果给出的建议可以作为外行为可能。

谢谢你。

编辑

我有2个后续问题。

问题1),因为这是一个列表中的项目寻呼,如何将URL看起来像如果我想让它安宁?

问题2)自从我把删除链接下来的每一个项目列表,我现在明白了,我应该使用

<form method="POST">
<input type=hidden name="_method" value="delete">
<input type="submit" >
</form>

代替。

然而,形式应该张贴在哪里?该项目的网址?/项目/{item-id}

但我想要回到这个清单的页面显示的一个成功的消息成功后,删除该行在数据库。

我也想避免一个弹出消息时,我刷新这一清单的页面与成功的消息。

如果我后回到这个list.php 网址,那么它不是宁静,是吗?因为我告诉下面的答案,每个项目的资源需要自己的网址。

请告诉我。谢谢你。

有帮助吗?

解决方案

宁静的通常时使用的参考网服务,但它可以很好地适用于网页。简而言之,正在宁静是有关处理资源。一个资源可以一个人,一个书籍、电影、剧场、机票,或者任何你的幻想。

有四种基本的操作你可以在执行一个资源。

  • create(员额)
  • 读取(得)
  • 更新(投入)
  • 删除(删除)

大多数网络浏览器不支持 PUTDELETE 行动,所以只能使用后的行动为发送的数据。轨假的投入和删除通过在一个隐藏的参数名 _method 这一框架起和路线,它根据这种价值。

还有,你不应该使用 GET 对任何破坏性行动。任何行动改变的状态资源(s),应该调用 POST, PUT, 或 DELETE 根据变化(假把/删除后如果需要的话).

我建议你结账的方式宁静的路由是处理在轨只是为了得到一个主意,如果没有别的。虽然四个行动上都足以修改资源的任何可能的方式,轨道,也引入了其他三个类型的行动的声音有用的。

  • 指数(清单视图的所有项目)
  • 新的(通常的形式看到添加一个新的 资源)
  • 编辑(通常是一种形式看到 更新现有的资源)

漂亮的网址是肯定的表格进行设计时宁静的网站,但是可能是最大的赢是质量的代码提高了自动的。当你只有处理资源,并且只有四个潜在的行动,可以应用到一种资源,然后事情开始为清理过自己。

编辑1:自我描述的网址是优选的并且会让你的生活变得更加容易,但什么能阻止从创造的神秘的网址,独特的识别资源和管理使用HTTP词。网址如下(使用md5)以唯一标识的资源是完美的宁静。

// represents a person "John Doe"
http://example.com/4c2a904bafba06591225113ad17b5cec

// represents the movie "Lord of the Rings: The Two Towers"
http://example.com/1d9198260dec7bda3fb21e232d60fec3

// represents the "Formula One" sport
http://example.com/fs340as?id=23xa12&type=SP012Ts

这就是代表国家转让的权利。MD5hash就像是邮寄地址的资源保持不变。该代表可以在影片的详细信息(html/xml/json/etc.), 或者视频的电影本身取决于功能的客户)。

编辑2:让我们说你有一种资源,这是一个集合 countries 世界。这可能是由URI和HTTP动,例如:

GET /countries

由于寻的是一个酒店的应用程序而不是资源,可以供查询参数的控制。

GET /countries?page=1

一个国家也是一种资源的一部分的国家资源。你可以确定一个国家与一个URL如:

/countries/<id>

和操作这个国家能够执行与这些动词:

GET    /countries/<id>
POST   /countries  -- the new country has no existing representation
PUT    /countries/<id>
DELETE /countries/<id>

其他提示

龙回答短:是的。 REST是两者兼而有之。这是因为,即使你有最简单的网站之一仍然必须让你的页面,也许那些POST个人数据添加到留言中的条目。在我们都坚持以某种方式休息。

在您的浏览器的情况下执行不力使得它很难实现PURE RESTful方式。 DELETE不支持没有JavaScript,因此你将不得不使用GET或POST(两者都在REST具有删除一个完全不同的意思)呢。

RESTful方法可以可靠地在网页中使用。在URL把命令是不是一个好主意,由于副作用,你提。当您更改数据库(或做任何改变的模型),使用POST命令。

当然,你不必在主流浏览器PUT和DELTE,但你总是可以发送一个简单的POST与像method =“PUT”一些具体的参数,method =“删除”等。

我写了一个很小的框架,Zend框架的顶部,使实施的RESTful接口简单:

http://github.com/mikekelly/Resauce

您可以使用Web服务和网站。本质上,一个网站只是由HTML驱动的web服务。

REST的手段不是“漂亮的URI”。尽管的URI标识资源的唯一REST说,有关URI的是,他们不应该包含一个动作paramater像“删除”。

在你的情况,你会叫

DELETE /items/6793

答案是通常状态码200 OK与修改列表作为消息体。参考: http://restpatterns.org/HTTP_Methods/DELETE

由于HTML 4不支持超过GET和POST你必须解决方法与隐藏paramater并覆盖在服务器端的HTTP方法其它形式的动作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top