0

我维护一个通过 javascript 提供 XML/A 访问的库:https ://github.com/rpbouman/xmla4js

大多数情况下它工作正常,但我想改进对错误响应的处理。据我正确理解 XML/A 规范,错误响应采用以下形式:

<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
  <faultcode>...</faultcode>
  <faultstring>...</faultstring>
  <faultactor>...</faultactor>
  <detail>
     ...
  </detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

但是,我发现至少对于 Mondrian(我最熟悉的 XML/A 提供者)来说,该<detail>元素通常包含非常宝贵的信息。例如,通用<faultcode>元素可能会说诸如“找不到数据源”之类的通用内容,而该<detail>元素可能包含以下内容:

    <XA:error xmlns:XA="http://mondrian.sourceforge.net">
      <code>00HSBC01</code>
      <desc>The Mondrian XML: MondrianOneToOneUserRoleListMapper.ERROR_001_ - Access is denied because the roles of this user don&#39;t correspond to any present in the Mondrian schema requested.</desc>
    </XA:error>

这表明了一个更具体的条件。

我的问题是,在其他 XML/A 提供程序的错误响应中是否有某种模式可以用来改进我的 api 并向我的库的用户提供更好的错误消息?如果您不了解某个模式,但只能提供您碰巧可以访问的 XML/A 提供程序的示例,那么我们也非常感谢您。谢谢!

4

1 回答 1

0

您可以在此处下载 XMLA 协议的 Microsoft 规范:http: //msdn.microsoft.com/en-us/library/ee320606.aspx(超过七百页)。

一般来说,有两种类型的错误:

  • 全局的,要么阻止请求被执行,要么阻止服务器返回任何有用的东西(例如语法错误),
  • 和本地的,例如在对返回一般结果结构的 MDX SELECT 请求的响应的单个单元格中。在这种情况下,错误对象可能会被返回,例如在一个或多个单元格中,而不是结果。例如,错误会阻止服务器计算此特定单元格值,例如对计算成员定义中的未知元素的引用。
于 2014-02-19T17:25:57.507 回答