我在其他地方寻找过这个问题的答案,但找不到。
我正在构建一个 MVC Web API,它将在一定程度上启动远程计算机上的进程。截至目前,对“blah.com/Process”的 POST 会将一些初始化数据保存到数据库中,并指示 Windows 服务开始对其进行操作。对“blah.com/Process/{Id}”的 GET 请求将检索流程的当前进度。
这两个 Controller 操作使用两种不同的模型。 POST 接受包含参数信息的模型,而 GET (因为它用于报告进度,而且我不在乎参数)不会返回该模型。这是否违反了 RESTful 设计?我应该使用两个不同的 URL,还是会违反 REST?据我了解,正在传输的数据应该代表进程的当前状态,在我看来,在这两种情况下都是如此。
编辑:感谢您的回复。我现在对我的方法感到更加安全。 :)
最佳答案
Conforming to the REST constraints is generally referred to as being "RESTful". If a service violates any of the required constraints, it cannot strictly be considered RESTful.
无需深入讨论复杂的细节,这些限制是:
- 客户端-服务器
- 无状态
- 可缓存
- 分层系统
- 按需代码(可选)
- 统一的界面
您的描述中的两种情况都不违反这些原则。做对 API 使用者最有意义的事情,使整体尽可能简单。
关于asp.net-mvc - 我可以对单个 RESTful Url 的 POST 和 GET 使用两种不同的模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732343/