c# - REST 标准 - 输出模型是否应该始终匹配输入模型?

标签 c# rest asp.net-web-api

所以我有要求部分输出模型必须包含UI重要信息。这些信息本质上是文本翻译和日期、价格、长度的建议格式。

因此,输出模型的示例可能是:

{
  statuses : {
    enumValue1 : "Display This Text",
    enumValue2 : "Display This Text2",
  },
  thePrice : {
    value : 3.50,
    formattedValue : "$3.50"
  },
  length : {
    meters 3,
    formattedValue : "3 ft."
  },
  iAmAPropertyOnlyInGet : 42
}

现在,如果我将其作为输出模型,那么使用完全不同的输入模型是否“可以”?

{
  status : {
    enumValue1,
    enumValue2,
  },
  thePrice : 3.50,
  lengthInMeters : 3  
}

最佳答案

您发送到原始服务器的表述可能与您收到的表述完全不同。考虑网络浏览器的工作方式。您获取 text/html 并发布 application/x-www-urlencoded-form

当使用 PUT 方法时,如果 PUT 和 GET 不相同,则相似也是正常的。

除了必须在消息中明确指定语义之外,REST 架构风格对 HTTP 负载的形状没有任何限制。

因此,事实上,在客户端和服务器之间共享模型类型而不在消息中明确标识该类型违反了自描述性 REST 子约束。

关于c# - REST 标准 - 输出模型是否应该始终匹配输入模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256258/

相关文章:

c# - 要调用此方法, "Membership.Provider"属性必须是 "ExtendedMembershipProvider"的实例

c# - 从 XML 架构文件 (xsd) 生成 C# 9 类,包括现代功能(可空值 moSTLy)

c# - .NET 反射中的转换

java - 使用 @Stateless 注释 Java REST 资源有哪些好处/区别?

javascript - 如何将表单数据从reactjs发送到mvc asp.net中的 Controller

azure - WebAPI 应用程序的应用程序洞察

C# 从字符串转换为 int 或 int32。可能的?

c# - 服务器在区域设置中设置为 en-GB,但 DateTime 解析为 en-US

python - Django:将来自管理员的新行存储在数据库中并通过 REST API 返回它们

Java:ArrayList 损坏?