举个例子说明非RESTful设计?

Che*_*eng 14 rest

我作为Rails开发人员学习了"RESTful"这个术语.阅读维基百科后,也在这里这里.

我不明白.在我看来,Rails只是用一种简洁的方式来描述URL.在我看来,每个URI都是RESTful,在它的设计范围内.

例如,我认为在应用程序本身的范围内GET /delete?student_id=3是RESTful .

任何人都可以告诉我哪个收缩违反了吗?请参考REST定义中的constrict .

Dan*_*llo 15

一个GET请求应该是幂等,并且请求不应该在服务器上留下任何的副作用.引用HTTP规范9.1.1:

特别是,已经建立了这样的惯例:GETHEAD方法不应该具有采取除检索之外的动作的重要性.这些方法应该被认为是"安全的".这允许用户代理以特殊方式表示其他方法,例如POST,PUT以及DELETE使用户意识到正在请求可能不安全的动作的事实.

因此,它GET /delete?student_id=3已经违反了GET动词的幂等性假设,因为它将删除服务器上的记录.

RESTful接口是一个统一的接口,换句话说,意味着a GET应该按照HTTP规范的要求运行.这就是规范所说的:

GET方法意味着检索由Request-URI标识的任何信息(以实体的形式).如果Request-URI引用数据生成过程,则生成的数据应作为响应中的实体而不是过程的源文本返回,除非该文本恰好是过程的输出.

...

  • 它违反了HTTP规范.不是REST规范. (2认同)

Bru*_*uno 7

在我看来,Rails只是用一种简洁的方式来描述URL.在我看来,每个URI都是RESTful,在它的设计范围内.

URI既不是RESTful也不是非RESTful.REST是一种架构风格,您需要考虑整个应用程序.

GET是检索请求的方法.如果你想把它放在REST论文的上下文中,如果你的GET请求有副作用,那么它将破坏一些其他约束,例如关于缓存.

您还可以设计一个RESTful系统,其中GET /delete?student_id=3请求会为您提供一个表示,告诉您(或要求您确认)您要删除该学生,只要它实际上不执行删除操作.