管理用户时对每个操作使用哪种最佳方法(POST、PUT、GET、DELETE)?

Which is the best method (POST, PUT, GET, DELETE) to use for each action while managing users?

我使用 html、php、javascript(带有查询和 ajax)和 mysql 开发了一个网页。在此页面中,我有一个登录系统和一些用于管理用户的表格(更改密码、注册、搜索、编辑和删除)。对于这些操作中的每一个,我都使用 ajax(使用 POST 方法)来避免重定向。一切正常,但我想在每种情况下使用最合适的方法。 在每种情况下,我都有一个带有一些输入的表单和一个用于提交数据的按钮(我在 onclick 事件中调用一个函数)。然后,在这些函数中,我使用 ajax 使用 POST 发出请求并将一些数据传递到 php 文件,即 select,插入、更新或删除数据来自数据库。

关于每种方法的定义,我认为最好的选择是 POST 用于注册,PUT 用于更改密码和编辑用户,GET 用于搜索(可能还有登录),DELETE 用于删除用户.但是,我读到登录最好使用 POST,因为如果你使用 GET,你会在 URL 中传递数据(尽管我使用 ajax 来避免重定向,所以我认为 URL 是一样的)。我还读到一些浏览器不支持 PUT 或 DELETE,因此最好不要使用它们。此外,我认为 ajax 不允许在 delete 方法中传递数据。

我看到很多人倾向于使用 POST,但我不知道这是一个好的做法还是默认设置。

每个操作的 best/right/most 合适选项是什么?

编辑:更多信息:搜索、注册、编辑和删除功能仅适用于管理员角色。其余用户登录并可以更改密码。

当管理员进行搜索时(搜索注册用户,为此使用一些字段值,即名称为 "Juan" 的用户)显示 table,然后他可以单击编辑或删除(每个结果都会显示这些按钮)并提示 window 或警报,但 url 始终相同且不会刷新。我有一个或多或少的静态页面,其中页眉、页脚和菜单是固定的,唯一改变的是内容。这就是我使用 ajax.

的原因之一

主要区别在于它的显示方式。在这种情况下,我认为您不需要删除或放置。除了搜索之外,您只需使用 post 就可以了。根据定义,post 变量不会出现在地址栏中。我敢肯定,您不希望人们发送链接来访问那里的帐户,使 post 最适合那些变量,因为变量对用户保持隐藏状态,但可以通过请求方法或您喜欢使用的任何方式轻松访问在你这边。在搜索中,get 很可能是最好的。如果有人想与他们的朋友分享搜索结果集,他们可以轻松访问 url 并发送它,因为搜索输入将简单地位于页面顶部的地址栏中。如果我没有正确回答这个问题,你能发一份代码示例吗?希望对您有所帮助!

我不确定我是否完全理解你问的问题。我相信您要问的是 "Why isn't the url changing when the form is submitted?" 告诉我这是否正确。如果这是您要问的问题,我想提醒您确保您的方法是 GET。告诉我,如果这不是您要问的问题,我会编辑答案。