GET
请求应该是幂等的,并且该请求不应在服务器上留下任何副作用。引用自HTTP规范第9.1.1节:
因此,特别地,已经建立了一个惯例,即
GET
和HEAD
方法不应具有除检索之外的任何行动意义。这些方法应被视为“安全的”。这允许用户代理以特殊的方式表示其他方法(例如POST
、PUT
和DELETE
),使得用户意识到正在请求可能不安全的操作。
GET /delete?student_id=3
已经违反了GET
动词的幂等性假设,因为它将在服务器上删除一条记录。GET
应该按照HTTP规范所要求的方式运作。这就是规范中所说的:
GET
方法表示检索由请求URI标识的任何信息(以实体形式)。如果请求URI引用数据生成过程,则应将产生的数据作为响应中的实体返回,而不是该过程的源文本(除非该文本恰好是该过程的输出文本)。...
请参阅第5.1.5节。您的示例违反了统一接口约束。这是通过违反HTTP规范来实现的。