通过将任何具有副作用的交互转换为按钮而不是超链接,我使HTML / CSS开发人员的生活变得困难。
例如,我将购物网站中的“清除购物篮”从链接更改为按钮。 在任何具有副作用的动作应该是按钮而不是超链接的前提下。 (即使是蜘蛛或机器人也永远不会到达这一点) 这与REST有什么关系?
最好的答案将有很好的理由我可以使用为什么我为HTML / CSS人员制造困难,...或者为什么我错了:-),...也许我是纯粹的但是没有真正的理由?
注意:我不反对将 ajax 功能放在超链接上,甚至是选择更改事件上的有效副作用。
干杯。 默里。
答案 0 :(得分:4)
我认为你做对了,但证明它可能在“REST”的范围之外。
如果这些链接真的只是<a>
标签导致浏览器发出GET请求然后点击,那么它们不应该有任何副作用,因为根据HTTP规范,GET应该是安全的,幂等。请参阅之前关于链接后蜘蛛的评论等。
现在,如果“链接”使用javascript在点击时真正对服务器进行POST,或者某种类似的技巧,那么从HTTP的角度来看它们是A-OK。可能比他们的工作更多的工作,但RESTful。
但也有用户界面设计需要考虑。因为在没有CSS和javascript的基本HTML中,链接始终是GET,因此用户自1994年以来一直受到培训,期望任何看起来的超链接都是安全且幂等的。通过做一些不同的事情,你的设计师违反了最少惊喜的原则。这似乎是雅各布尼尔森会支持你的。
答案 1 :(得分:2)
这与REST没什么关系,但我尝试遵循这个简单的规则:
Hyperlinks are for navigation.
Buttons are for interaction.
答案 2 :(得分:1)
如果您的“有状态”操作是链接或按钮,则无关紧要。您可以拥有删除/添加等的链接。一致性至关重要。所以,如果你想让这些动作成为按钮,那很好。我认为有才华的CSS人可以使链接看起来像按钮。您可能根本不需要html按钮。