我作为Rails开发人员学习了"RESTful"这个术语.阅读维基百科后,也在这里和这里.
我不明白.在我看来,Rails只是用一种简洁的方式来描述URL.在我看来,每个URI都是RESTful,在它的设计范围内.
例如,我认为在应用程序本身的范围内GET /delete?student_id=3
是RESTful .
任何人都可以告诉我哪个收缩违反了吗?请参考REST定义中的constrict .
一个GET
请求应该是幂等,并且请求不应该在服务器上留下任何的副作用.引用HTTP规范9.1.1:
特别是,已经建立了这样的惯例:
GET
和HEAD
方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST
,PUT
以及DELETE
使用户意识到正在请求可能不安全的动作的事实.
因此,它GET /delete?student_id=3
已经违反了GET
动词的幂等性假设,因为它将删除服务器上的记录.
RESTful接口是一个统一的接口,换句话说,意味着a GET
应该按照HTTP规范的要求运行.这就是规范所说的:
该
GET
方法意味着检索由Request-URI标识的任何信息(以实体的形式).如果Request-URI引用数据生成过程,则生成的数据应作为响应中的实体而不是过程的源文本返回,除非该文本恰好是过程的输出....
在我看来,Rails只是用一种简洁的方式来描述URL.在我看来,每个URI都是RESTful,在它的设计范围内.
URI既不是RESTful也不是非RESTful.REST是一种架构风格,您需要考虑整个应用程序.
GET
是检索请求的方法.如果你想把它放在REST论文的上下文中,如果你的GET
请求有副作用,那么它将破坏一些其他约束,例如关于缓存.
您还可以设计一个RESTful系统,其中GET /delete?student_id=3
请求会为您提供一个表示,告诉您(或要求您确认)您要删除该学生,只要它实际上不执行删除操作.