【问题标题】:Rest API different models for POST and GET/PUT用于 POST 和 GET/PUT 的 Rest API 不同模型
【发布时间】:2015-08-29 10:08:01
【问题描述】:

我正在设计一个 REST API。如您所知,没有真正的 RESTful API 规范。 就我而言,我有一个简单的 API,其中有用户。 我可以获取用户,更新他们。像这样的:

GET .../users/12

但是,对于创建用户,我只想允许属性的子集。 例如。 当您获得用户时,您会获得许多属性,例如: ID, 姓名, 创立日期 等等

当您创建一个用户时,我只想允许发布名称而不是其他任何内容。 在您对 RESTful 服务的理解中,是否允许对同一资源的不同 http 动词有不同的模型? 或者你会期望一个

POST ../用户

可以具有与获取现有属性完全相同的属性吗?

或者有什么你认为我不应该这样做的吗? 只是在阅读了许多宗教讨论后想知道;)

提前谢谢你 最好的 劳林

【问题讨论】:

    标签: rest architecture


    【解决方案1】:

    首先:我认为 Roy Fieldings 的论文 Architectural Styles and the Design of Network-based Software Architectures 对 RESTful 架构风格有一个很好的定义。

    第二:我认为你有一个小误解 REST 与模型或控制器无关,它与资源有关。模型和资源之间通常存在一对一的关系,但这不是必需的。

    第三:要实现您的要求,您只需要一个user 模型。当 API 用户发布的参数超过您允许的参数时,只需忽略它们并仅使用您要在新创建的模型上设置的参数。或者,如果您不想忽略它们,请返回 400 Bad Request HTTP 状态。

    【讨论】:

    • 嗨约翰内斯谢谢您的回复!这对我有帮助:)
    • 如果客户端应用程序直接使用模型怎么办?那么当你在做一个 POST 时,对象上有很多不必要的属性......
    • 我认为这不是问题,因为忽略属性很容易。为什么他们应该直接使用相同的模型,它会将自身耦合到它无法控制的数据模型。如果不希望松散耦合,则不需要在一个大系统的两个组件之间使用 HTTP API。
    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多