0

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

1 回答 1

0

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

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

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

于 2012-08-22T16:42:18.223 回答