是www.example.com/post/21/edit一个RESTful URI?我想我知道答案,但还有一个问题

2024-04-19 18:54:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很明显的问题要回答:

上下文:我正在创建一个用于教育目的的博客(想学习python和网页.py). 我决定我的博客有帖子,所以我创建了一个帖子类。我还决定可以创建、读取、更新或删除帖子(所以是CRUD)。所以在我的Post类中,我创建了响应Post、GET、PUT和DELETE HTTP方法的方法)。到现在为止,一直都还不错。在

目前我遇到的问题是一个概念性的问题,我知道发送一个PUT-HTTP消息(带有一个编辑过的Post)到,例如/Post/52应该用HTTP消息的主体内容更新id为52的Post。在

我不知道如何从概念上正确地为(HTML)编辑页面提供服务。在

像这样做:/post/52/edit是否会违反URI的思想,因为“edit”不是一个资源,而是一个操作?在

但是在另一方面,它是否可以被视为一个资源,因为URI只响应一个GET方法,它只返回一个HTML页面?在

所以我的终极问题是:如何以RESTful的方式为用户编辑提供HTML页面?在


Tags: 方法目的http消息编辑网页getput
3条回答

另一种RESTful方法是对修饰符使用查询字符串:/post/52?edit=1

另外,不要太在意REST模型的纯洁性。如果你的应用程序不能很好地融入模型,那就打破规则。在

与其叫它/post/52/edit,不如叫它/post/52/editor?在

现在它是一种资源。避免了进退两难的局面。在

没有restfuluri这样的东西。这是一个错误的概念,因为uri应该对客户端完全不透明。在

如果它通过避免URI中的动词来帮助您正确地实现HTTP统一接口,那么这很好,但是不要被URI的外观所限制。将资源建模视为数据建模的一种类型是非常有限的。RESTful系统通常需要做的不仅仅是CRUD操作,所以您需要对系统中可用的资源有创造性。在

如果您创建一个URL并取消对它的引用,则返回一个200状态代码,则该URL引用一个资源。如果您创建另一个URL,它也返回一个200,那么这是一个不同的资源。在

这意味着:

http://example.org/customer/10.xml
http://example.org/customer/10.json
http://example.org/customer/10?format=xml
http://example.org/customer/10?format=json

是4种不同的资源

^{pr2}$

也是不同的资源。在

所以如果你回答你的问题

^{3}$

它返回一个200状态码和一个表示,那么它必须是一个资源。在

相关问题 更多 >