超文本传输协议 - HTTP协议 - 定义了几种方法(称为“动词”),指示要对资源执行的所需操作。资源由 URI(统一资源标识符)指定,更常见的是 URL。该资源可能是预先存在的数据或动态生成的数据,这取决于服务器的实现。服务器可以配置为支持任何方法组合。最常见的是:GET、POST、PUT 和 DELETE,但还有其他几种。可以定义的方法数量没有限制,这允许在不破坏现有基础架构的情况下指定未来的方法。
幂等性的概念与此讨论相关。如果某件事是幂等的,那么无论你做多少次,结果总是一样的。一个很简单的例子来自数学:乘以1;无论您将任何数字乘以 1 多少次,结果将始终相同:原始数字。
SOAP API 在通过 HTTP 发送时,只能使用 POST 动词,具体的操作取决于被调用的 SOAP 方法。REST,作为一种架构风格而非标准,充分利用了所有可用的动词。对于每个动词应该或不应该做什么没有明确的答案。在测试 RESTful API 时,您可以使用以下最佳实践作为起点,但请咨询您的内部架构师或开发负责人,以了解您的项目究竟遵循什么。
在这里讨论的四种方法中,POST 是唯一被假定为非幂等的方法。这是在应用程序中创建新对象时的首选方法,例如创建新订单。每个 POST 方法调用都应该导致在数据库中创建(或可能删除)一个新对象。
使用 POST 方法实现整个 API 中的每一个调用并不少见,尤其是对于遗留应用程序。这是架构问题和缺乏远见的指标。如果还存在资源层次结构问题,未来的增强将很困难。作为测试人员,在这种情况下您应该特别谨慎,并在进行估算时考虑额外的测试时间。
PUT 方法应该是幂等的。“应该”一词表示服务器能够以不同的方式实现此方法。测试人员应该将这样的实现标记为不一致。
PUT 仍然可以用于创建对象,尽管由于它是幂等的,重复执行相同的请求将具有与第一次相同的最终结果。例如,无论您发送多少次创建相同客户 ID 的请求,它都应该只在数据库中创建一次。
DELETE方法是幂等的;多个请求应该只导致一件事被删除。例如,考虑上面的场景,多个 POST 请求被发送到服务器以获得新订单,从而导致同一产品的多个订单。一个 DELETE 请求应该接受一个唯一标识符以从订单中只删除一个产品,因此发送相同的 DELETE 请求将导致正确的幂等操作:产品的一个实例。
如果 DELETE 请求接受产品名称,多次发送请求最终会从订单中删除所有产品,从而导致此方法的非幂等实现。同样,作为测试人员,这种情况应该引起开发团队的注意。这种“多次删除”功能的更正确实现是结合正确制作的 URL 的 POST 操作,例如:/{order_number}/{product_name}/删除
GET 操作通常仅用于从系统中检索信息。没有添加或更改任何内容,因此它不仅仅是幂等的,它实际上是无效的——它对数据绝对没有副作用,除了可能的日志记录。
正如我们提到的,在使用 REST 时可以有“其他动词”。在这种情况下,需要记住以下几点:
由于 REST 没有标准,因此请确保从事产品工作的每个人都使用相同的定义。这应该由您团队的开发负责人设置。
由于某些动词不是幂等的,因此每个人,尤其是使用公共 API 的消费者,在使用它们时都期望得到相同的结果,这一点至关重要。
验证是否使用了正确的动词。由于某些动词可以达到相同的结果,因此请确保使用正确的动词。从功能和一致性的角度来看。
以上就是关于“了解rest请求方法”的介绍,如果大家想了解更多相关知识,可以关注一下极悦的Java极悦在线学习,里面的课程内容从入门到精通,细致全面,很适合没有基础的小伙伴学习,希望对大家能够有所帮助。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习