Model view controller 在RESTful MVC框架中使用HTTP重定向可以吗?

Model view controller 在RESTful MVC框架中使用HTTP重定向可以吗?,model-view-controller,http,rest,redirect,frameworks,Model View Controller,Http,Rest,Redirect,Frameworks,我正在尝试开发一个MVC框架 当用户创建一个新记录时,如果成功创建了新记录,那么显示新记录对我来说似乎是有意义的 使用http重定向将用户移动到新记录的视图可以吗?不要这样做!针对这种情况使用正确的HTTP响应代码。例如,如果用户向系统发布新记录: POST record/id New record stuff 提供反馈不仅是一个带着笑脸的HTML表示,而且是正确的HTTP响应代码 201 Created 在显示新创建的记录时,您应该用语义应答(即HTTP 201-Created)来响应“创

我正在尝试开发一个MVC框架

当用户创建一个新记录时,如果成功创建了新记录,那么显示新记录对我来说似乎是有意义的


使用http重定向将用户移动到新记录的视图可以吗?

不要这样做!针对这种情况使用正确的HTTP响应代码。例如,如果用户向系统发布新记录:

POST record/id
New record stuff
提供反馈不仅是一个带着笑脸的HTML表示,而且是正确的HTTP响应代码

201 Created
在显示新创建的记录时,您应该用语义应答(即HTTP 201-Created)来响应“创建”操作,这通常被认为是正常的

另外,为新添加的项目添加一个指示“读取”操作的位置头甚至更好


您可能想看看Richardson成熟度模型对此的看法,Martin Fowler写了一篇关于它的文章。

如果您正在创建一个记录,那么这是推荐的状态代码


但是,在某些情况下,您可能需要重定向。例如,您的api不再位于当前url中,您希望将用户重定向到新url。

仅部分正确。如果用户代理(UA)事先知道记录的
id
,则会使用正确的方法(在技术上可能的情况下)。如果UA不知道
id
,并且分配给服务器端,则服务器应使用201响应代码进行响应,并使用
位置
头向UA指示新创建资源的URI。(我想澄清这一点,因为OP特别询问重定向。)从我的原始帖子开始,我一直在寻找一些现有框架的灵感,我发现Yii框架似乎正是我最初建议的那样。@jx12345我想Yii不是很安静;或者至少没有完全使用http。我发现Yii框架就是这样做的,即在成功创建时重定向。生成的控制器的createAction()方法的代码如下所示:if(isset($\u POST['Employee']){$model->attributes=$\u POST['Employee'];if($model->save())$this->redirect(数组('view','id'=>$model->id));}}在firebug中,我得到了以下信息:POST create 302发现我并不是说这意味着它是正确的-我只是想知道你对此有何想法。是的,我想没有。。。再次感谢--很抱歉重复发布评论-我分心了,然后被发现只能编辑5分钟的评论谢谢,只是读了你提到的文章,它真的总结得很好,再次感谢这就是我发现的,我在数据库中创建了这个东西,然后使用现有的“视图”,我过去只是查看一个东西,但随后任何相关链接都会被破坏,因为我会在example.com/create,而不是我应该在的位置,即example.com/view/1,所以我决定使用重定向,但我感觉有点错误。