是宁静意味着网服务的唯一或两者的网络服务器和网页吗?
-
25-09-2019 - |
题
我读了很多宁静的教程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(员额)
- 读取(得)
- 更新(投入)
- 删除(删除)
大多数网络浏览器不支持 PUT
和 DELETE
行动,所以只能使用后的行动为发送的数据。轨假的投入和删除通过在一个隐藏的参数名 _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方法其它形式的动作。