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