【问题标题】:Can I use two different models for the POST and GET of a single RESTful Url?我可以为单个 RESTful Url 的 POST 和 GET 使用两种不同的模型吗?
【发布时间】:2013-01-21 20:15:57
【问题描述】:

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

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

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

编辑:感谢您的回复。我现在对自己的方法感到更加安全。 :)

【问题讨论】:

  • 如果GET URL返回进程的进度,为什么不创建一个类似http://blah.com/Process/{id}/Progress的URL呢?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    According to Wikipedia:

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

    在不涉及复杂细节的情况下,这些约束是:

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

    您的描述中的两种情况都没有违反这些原则。做对 API 的使用者最有意义的事情,使整体尽可能简单。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 2023-03-03
        • 1970-01-01
        • 2015-05-02
        • 2018-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多