当前位置:  开发笔记 > 运维 > 正文

举个例子说明非RESTful设计?

如何解决《举个例子说明非RESTful设计?》经验,为你挑选了2个好方法。

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

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

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

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



1> Daniel Vassa..:

一个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> Bruno..:

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

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

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

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有