检索有一段时间我是(错误地)认为一个RESTful API只是暴露CRUD操作持续了Web应用程序的实体。当你在“现实世界”中编写代码时,你很快就会发现这还不够。例如,银行账户转账不一定是持续的实体。这可能是一个短暂的资源,你POST
到/transfers/
和有效载荷您指定的细节:应该如何瞬态资源以RESTful API
{"accountToCredit":1234, "accountToDebit":5678, "amount":10}
使用POST
这里是有道理的,因为它改变了服务器上的状态($从一个账户10点移动到另一个每次这发生了POST
)。
应在不影响服务器的情况下会发生什么?简单的第一个答案是使用GET
。例如,您想要获得低于100美元的储蓄和支票帐户列表。然后你会打电话给GET
到/accounts/searchResults?minBalance=0&maxBalance=100
。如果您的搜索参数需要使用不符合GET
请求最大长度的复杂对象,会发生什么情况。
我首先想到的是使用POST
,但经过考虑之后一些更多的,应该可能是一个PUT
,因为它不改变服务器的状态,但是从我的(有限的)理解我总是虽然的PUT
为更新资源和POST
创建资源(如创建此搜索结果)。那么在这种情况下应该使用哪种?
我发现下面的链接,其提供了一些信息,但它不是很清楚,我应该怎样在不同的情况下使用:
Transient REST Representations
How to design RESTful search/filtering?