我可以为单个RESTful Url的POST和GET使用两种不同的模型吗?

时间:2013-02-06 15:14:40

标签: asp.net-mvc http rest asp.net-mvc-4 asp.net-web-api

我在其他地方寻找过这个问题的答案,但是找不到答案。

我正在构建一个MVC Web API,它将部分启动远程计算机上的进程。截至目前,“blah.com/Process”的POST将一些初始化数据保存到数据库并指示Windows服务开始对其进行操作。对“blah.com/Process/ {Id}”的GET请求将检索该过程的当前进度。

这两个控制器动作使用两种不同的模型。 POST接受一个包含参数信息的模型,GET(因为它用于报告进度,我不在乎参数)不返回。这是违反RESTful设计的吗?我应该使用两个不同的URL,还是 违反REST?据我了解,正在传输的数据应该代表流程的当前状态,在我看来它在两种情况下都会这样做。

编辑:感谢您的回复。我现在的态度让我感觉更加安全。 :)

3 个答案:

答案 0 :(得分:3)

According to Wikipedia

  

符合REST约束通常被称为“RESTful”。如果服务违反任何所需的约束,则不能严格地将其视为RESTful。

不进入复杂的细节,这些限制是:

  • 客户端 - 服务器
  • 无状态
  • 可缓存
  • 分层系统
  • 按需代码(可选)
  • 统一界面

您的描述中的任何一种情况都不违反这些原则。做对API的消费者最有意义的事情,保持整体尽可能简单。

答案 1 :(得分:1)

正如其他人所指出的那样,这并不违反REST。但即使它是,如果它适合你,它可能仍然没问题,只要它对你的设计有意义。

答案 2 :(得分:0)

我已经看到GET和POST方法组合到同一个URL。这样做是可以接受的,而不是违反RESTful设计。