最近有人告诉我,一个合适的RESTful API应该为其接受和返回的资源表示定义模式。例如,对于XML使用XSD,对于JSON使用JSON Schema。
然而,在我查阅过的所有关于REST的书籍和文章中,似乎都没有明确提及这点。
可以有权威的资源来澄清我们在开发RESTful API时是否应该提供模式吗?
最近有人告诉我,一个合适的RESTful API应该为其接受和返回的资源表示定义模式。例如,对于XML使用XSD,对于JSON使用JSON Schema。
然而,在我查阅过的所有关于REST的书籍和文章中,似乎都没有明确提及这点。
可以有权威的资源来澄清我们在开发RESTful API时是否应该提供模式吗?
您将使用多么著名的约定。
模式:XSD是W3C标准,被许多行业使用;JSON Schema是针对JSON的众所周知的替代品。
其他:自然语言和示例是可行且非常有帮助的,尽管通常含糊或不完整。
您的社区最欣赏哪种约定。
模式:特别是那些已经投资于为其行业开发标准XSD的社区更倾向于欣赏XSD。
其他:新手更倾向于欣赏自然语言和示例。
您将使用多么自动化的验证过程。
模式:XSD和JSON Schema都提供现成的自动化验证。
其他:自然语言和示例需要进行临时努力以进行验证。
您将使用多么紧密或松散的接口。
模式:XSD和JSON可以表达一系列类型特定性,但在需要详细的类型特定性时表现出色。
其他:自然语言和示例可以传达类型要求,尽管通常不够精确。
最后,需要注意的是你将需要做出进一步的决策:不仅是关于模式与非模式的选择:
除了模式和其他接口定义决策外,所有这些都是将您的REST API传达给服务调用者的重要部分。
它们是可选的。如果您需要对用户请求进行细粒度过滤,并考虑内容的语法和语义,可以使用它。
https://www.rfc-editor.org/rfc/rfc3470
"XML Schema(在[41]和[42]中定义)提供了额外的功能,以允许更紧密、更精确地指定允许的协议语法和数据类型规范。"