2012-05-30 66 views
0

所有功能,这是错误的使用POST在REST的一切吗?我知道POST是用于更新和创建的,但是如果我将它用于SELECTS和DELETS呢?我基本需要的是一个可以对数据库执行CRUD操作的Web服务。我使用PHP。另外,如果我使用查询字符串来执行POST请求而不是使用JSON或XML,该怎么办?使用POST在REST协议

+0

你为什么不*使用适当的HTTP动词? – deceze

+0

我只是问是否错误。 – Indy

+0

Facebook使用GET进行所有功能。这也包括删除/更新。 – OptimusCrime

回答

0

如果您在使用POST的所有操作,你真的不能称之为REST了。

因此,这没有错,但它没有其他的不是:)

0

这是错误的使用POST在REST的一切吗?

不能使用POST在REST一切(例如,仅用于请求,没有响应),所以关于对或错的问题不是一个有效的问题。

我知道POST是用于更新和创建,但如果我将它用于SELECTS和DELETS呢?

它通常只是工作。

我基本需要的是一个Web服务,可以对数据库执行CRUD操作。

这很好。

使用PHP的进出口。

也没关系。 PHP已经支持HEAD,GET和POST方法。对于PUT和DELETE方法,你需要做更多的编码。

另外,如果我使用查询字符串来执行POST请求而不是使用JSON或XML,该怎么办?

您使用查询字符串而不是JSON/XML请求主体。 REST没有指定协议,所以你可以随心所欲地做任何事情。使用“查询字符串”可能是PHP的一个好主意,因为PHP支持开箱即用。但这取决于您用于处理程序的内容或您想要支持的内容。

由于您的问题非常广泛,因此您可能需要先阅读REST的一些基本说明,以便更明确地询问:A Brief Introduction to REST

0

是的,这是错误的。如果您使用POST进行除更新之外的其他任何操作,则实际上并不遵循REST约定。

0

你可以吃用叉子但为什么汤吗?无论如何,你可以使用任何方法,只是不要称之为REST协议。

0

是错误的使用POST对于那些意味着要重复呼叫。

POST调用不会被缓存而是让你不应该使用POST他们的选择调用应该是缓存能够(和重复)。

但是没有任何技术上的理由说明,为什么你不能通过POST强制所有的东西(特别是DELETE在所有的浏览器中都不支持),但是这确实意味着缓存对你的任何调用都不起作用,如果POST调用已经创建,用户可能无法刷新网页而不会被要求确认页面重新加载。

0

在这个REST教程here系列中的第4条说:

对于创建,更新和删除数据,使用POST请求。 (POST也可用于只读查询,如上所述,当需要复杂的参数注明。)

当然得到通常用于只读查询,因此把他们放在一起,如果复杂性是默认的假设,当在复杂性和简单性之间没有界限时,这是一种方便的假设,那么这个足够权限在REST上编写整个系列的人会说,发布一切都是可以的。缓存可能会对各种HTTP动词的反应做出一些假设,这可能是有益的,但是如果您的应用程序没有从缓存中受益(实际上,可能会因此受到伤害,所以禁用它或执行某些操作以免应用程序不受其影响),然后我不知道是否有任何问题。