我使用 RestWebservice 进行一些基本操作,例如创建/搜索。请求 xml 看起来像这样
<customer>
<name/>
.....
</customer>
为了成功操作,我返回相同的客户 XML,其中填充了额外的字段(例如,我们在请求中将其留空的 systemId 等)。
响应.Status=2000
对于不成功的操作,我会返回类似的内容并带有不同的错误代码。
例如 Response.Status = 422(不可处理的实体)
Response.Status= 500(内部服务器错误)和其他一些..
<errors>
<error> An exception occurred while creating the customer</error>
<error> blah argument is not valid.</error>
</errors>
现在我不确定这是否是将错误发送给客户端的正确方法。也许它应该出现在响应的标头中。
我将非常感谢任何帮助。
谢谢!
针对错误的正确 REST 方法是使用 HTTP 状态代码(听起来就像您正在做的那样)。其中有一个令人眼花缭乱的数组(正如你可以在这里看到的)并且您可能会惊讶地发现有多少适合最常见的情况。
至于友好的错误消息,您有两种选择。首先,您可以在 HTTP 响应中的状态代码后面提供状态代码的文本描述(有关详细信息,请参阅有关 HTTP 的 Wikipedia 文章)。该文本由服务器(而不是 HTTP 规范)确定,并为您发送的特定消息提供了一定的灵活性;大多数服务器端框架都为您提供了一种以编程方式设置此文本的方法。然而!最佳实践是不要滥用状态代码描述,因为您无法保证用户的 Web 客户端是否会读取它(有利于仅读取状态代码并使用标准 HTTP 描述)。如果您的状态描述很简单并且您控制服务器和客户端(这样您就知道自己会得到什么),我只建议使用这种方法。根据我的经验,这种方法对于 5xx 范围的代码非常有效,但我不会将其用于其他用途。
您的第二个选择是您已经在做的事情:返回错误状态代码和错误描述作为消息正文。这是最佳实践;如果它适合您,则无需更改。将其视为“错误的附加信息”而不是错误消息本身(这将是 HTTP 响应中状态代码之后的文本)可能会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)