我正在为我们的REST服务消息编写XSD并遇到了一个问题。根据使用的HTTP动词,我们的消息具有不同的限制。
例如,使用POST或PUT发送的一条消息需要填充两个字段中的一个,因此我使用的是选择元素。但是,从GET请求返回的同一消息将填充BOTH,这违反了选择限制。
有什么工作吗?以下示例消息:
<xsd:complexType name="MyMessage">
<xsd:sequence>
<xsd:choice>
<xsd:group ref="GroupA" />
<xsd:group ref="GroupB" />
</xsd:choice>
<xsd:element name="SomeString" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
答案 0 :(得分:0)
一种简单的方法是将消息中的相关动词记录为元素,因此您的内容模型将类似于
( ((POST|PUT), (GroupA|GroupB))
| (GET, GroupA, GroupB)
| (HEAD|OPTIONS|DELETE|TRACE|CONNECT)
)
或者,对于不同的动词使用不同的模式,原则是模式的工作是定义一组消息,而你的设计是可接受的精确消息集根据动词的不同而不同。