XSD限制基于REST动词的REST动词

时间:2012-08-22 15:15:04

标签: rest xsd

我正在为我们的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>

1 个答案:

答案 0 :(得分:0)

一种简单的方法是将消息中的相关动词记录为元素,因此您的内容模型将类似于

( ((POST|PUT), (GroupA|GroupB))
| (GET, GroupA, GroupB)
| (HEAD|OPTIONS|DELETE|TRACE|CONNECT)
) 

或者,对于不同的动词使用不同的模式,原则是模式的工作是定义一组消息,而你的设计是可接受的精确消息集根据动词的不同而不同。