RESTful Web服务:针对同一资源的不同XML表示

时间:2010-06-17 10:43:05

标签: xml rest xsd

我正在使用XML格式响应开发REST Web服务,我遇到了一些问题(真的,一个问题)。

我的一个资源有一些最终字段,因此一旦创建它们,就无法修改它们。根据这一点,我需要根据我正在做的事情对此资源进行不同的表示:创建或修改它。

我应该怎么做,为用户提供相同资源的不同XML-Schema,或者只写一个XML-Schema并根据我要求的方法读取一些字段?

由于

3 个答案:

答案 0 :(得分:0)

根据您的描述,我不认为这是资源的两种表示形式。我认为它是一种随时间变化的资源。

答案 1 :(得分:0)

听起来你的问题是关于文档 - 根据资源的状态,或者更确切地说,是否存在,为可接受的表示传达不同规则的最佳方式是什么。

如果是这种情况,并且您正在使用W3C XML Schema(XSD)文件来记录您的表示,那么我建议使用单个XSD文件,该文件允许使用这些字段,但是将xsd:annotation children添加到相关字段中,并注意那些字段仅在创建新资源时允许,而不是在修改现有资源时允许。

然后,您可以使用相同的XSD来验证这两种用例,并使用几行代码来专门检查不可变字段,如果用户尝试更改它们,则拒绝该请求。这非常重要;文档很重要,但让系统提供有用的反馈更为重要。如果有人试图更改其中一个不可变字段,则返回“400 Bad Request”,并在响应正文中包含一个明确的人类可读的问题解释。

答案 2 :(得分:0)

  

我该怎么做,为用户提供不同的XML-Schemas   资源或只写一个XML-Schema并读取或不读取某些字段   取决于我被要求的方法??

如果要重用模式的某些部分,则可以从其他文件导入这些部分,或者在服务器端语言上编写代码以重用它。我认为使用服务器端语言重用字段会更好,因为它更灵活。