C# Web服务API错误代码?

C# Web服务API错误代码?,c#,web-services,api,C#,Web Services,Api,在设计web服务API时,如何组织错误代码 我的意思是,如何跟踪API错误代码,以避免同一个错误有两个错误代码等(似乎有太多的错误代码需要跟踪???)错误代码出现在开发人工制品的哪些点上。我通常不在WSDL中使用枚举(也许我应该),但在我的(Java)代码中有枚举或静态常量。因此,如果你把所有这些放在一起,在添加新项目之前扫描现有列表就很容易了。然而,我不确定避免重复实际上是一件好事 最后,只要您能够可靠地解释错误代码,实际上是否有重复的错误代码并不重要。所以 10034 - disk fu

在设计web服务API时,如何组织错误代码


我的意思是,如何跟踪API错误代码,以避免同一个错误有两个错误代码等(似乎有太多的错误代码需要跟踪???)

错误代码出现在开发人工制品的哪些点上。我通常不在WSDL中使用枚举(也许我应该),但在我的(Java)代码中有枚举或静态常量。因此,如果你把所有这些放在一起,在添加新项目之前扫描现有列表就很容易了。然而,我不确定避免重复实际上是一件好事

最后,只要您能够可靠地解释错误代码,实际上是否有重复的错误代码并不重要。所以

 10034  - disk full
 23487  - disk full
似乎不会造成太大的伤害,但是如果在代码中的不同点

 10034 - disk full
 10034 - invalid input

那我们就有问题了。因此,我倾向于将错误代码的范围分配给不同的子系统,并让子系统设计自己的代码。这意味着使用任何给定错误代码的地方往往很少,因此,对错误代码的快速文本搜索(或grep)可以让我找到代码中报告问题的地方。

错误代码出现在开发人工制品中的什么位置。我通常不在WSDL中使用枚举(也许我应该),但在我的(Java)代码中有枚举或静态常量。因此,如果你把所有这些放在一起,在添加新项目之前扫描现有列表就很容易了。然而,我不确定避免重复实际上是一件好事

最后,只要您能够可靠地解释错误代码,实际上是否有重复的错误代码并不重要。所以

 10034  - disk full
 23487  - disk full
似乎不会造成太大的伤害,但是如果在代码中的不同点

 10034 - disk full
 10034 - invalid input

那我们就有问题了。因此,我倾向于将错误代码的范围分配给不同的子系统,并让子系统设计自己的代码。这意味着使用任何给定错误代码的地方往往很少,因此,对错误代码的快速文本搜索(或grep)可以让我找到报告问题的代码中的位置。

我会有两个,因为有两个错误代码(API和服务代码)有好处:

  • 安全性-在生产过程中,不应通过服务将API/后端详细信息推送给用户/消费者。有两个错误代码意味着试图通过该服务攻击您的后端的人无法使用该信息
  • 标识区域-通过两个代码,您可以看到错误来自何处(服务与API)
  • 您可以更改后端,这可能会引入新代码(或有与旧代码冲突的新代码),web服务将保持稳定,错误代码将继续为您的消费者工作

我会有两个错误代码,因为有两个错误代码(API和服务代码)有好处:

  • 安全性-在生产过程中,不应通过服务将API/后端详细信息推送给用户/消费者。有两个错误代码意味着试图通过该服务攻击您的后端的人无法使用该信息
  • 标识区域-通过两个代码,您可以看到错误来自何处(服务与API)
  • 您可以更改后端,这可能会引入新代码(或有与旧代码冲突的新代码),web服务将保持稳定,错误代码将继续为您的消费者工作

强制开发人员从中心位置显式获取数字(可能是数据库序列)


您甚至可以通过在您的内部网上提供一个页面来进一步利用这一点,开发人员应该在获得错误号之前首先在该页面中填写错误描述。将错误描述与错误号一起放入数据库中。您可以允许其他人进一步扩展此功能,并在此数据库上构建错误文档。

强制开发人员从中心位置显式获取数字(可能是数据库序列)


您甚至可以通过在您的内部网上提供一个页面来进一步利用这一点,开发人员应该在获得错误号之前首先在该页面中填写错误描述。将错误描述与错误号一起放入数据库中。您可以允许其他人进一步扩展此功能,并在此数据库上构建错误文档。

我想如果代码重复也没什么大不了的,但是如果相同的代码意味着两种不同的东西,那就有问题了。我想如果代码重复也没什么大不了的,但是,如果同一个代码意味着两种不同的东西,那将是一个问题。