【发布时间】:2013-05-07 22:31:43
【问题描述】:
有一段时间我(错误地)认为 RESTful API 只是将 CRUD 操作暴露给 Web 应用程序的持久实体。当您在“现实世界”中编写代码时,您很快就会发现这还不够。例如,银行账户转账不必是持久实体。它可能是一个临时资源,您可以在其中 POST 到 /transfers/ 并在有效负载中指定详细信息:
{"accountToCredit":1234, "accountToDebit":5678, "amount":10}
在这里使用POST 是有意义的,因为它会改变服务器上的状态(每次POST 发生时,$10 都会从一个帐户转移到另一个帐户)。
在不影响服务器的情况下应该怎么办?简单的第一个答案是使用GET。例如,您想要获取少于 100 美元的储蓄和支票账户列表。然后,您可以将GET 之类的东西称为/accounts/searchResults?minBalance=0&maxBalance=100。但是,如果您的搜索参数需要使用不适合 GET 请求的最大长度的复杂对象,会发生什么情况。
我的第一个想法是使用POST,但在考虑了更多之后,它可能应该是PUT,因为它不会改变服务器的状态,但根据我的(有限的)理解,我总是这样PUT 更新资源,POST 创建资源(如创建此搜索结果)。那么在这种情况下应该使用哪个呢?
我发现以下链接提供了一些信息,但我不清楚在不同情况下应该使用什么:
Transient REST Representations
【问题讨论】:
标签: http rest resources transient