我正在使用 .net web api 开发一些全面的 RESTFul API。
基本上已经有一个现有的 Web 应用程序在运行。我们正在为此开发一个移动应用程序。由于有现成的实现,我尽量重用现有的业务层代码,以便以后更容易维护。
但是,关于如何将异常返回给客户端,我遇到了一些问题。在 API 层,我调用一些业务函数来执行操作。业务层执行操作并在某些情况下抛出异常。
例如
public void ResultModel Process(InputModel input) {
if (input is not valid) {
throw new ApplicationException("some message");
}
// keep on processing
}
在 API 层,我正在尝试捕获所有异常,然后映射到一些预定义的 api 异常
例如
http response code: 404
reason: the country information is incorrect
http response code: 404
reason: invalid student id is provided
我在考虑 API 层,除了标准的 http 状态代码,我将创建一些错误状态代码。
例如。
http response code: 404
error code: error0001
reason: the country code is incorrect
http response code: 404
error code: error0002
reason: invalid student id is provided
然后在 API 文档中记录错误代码的含义。
但是,通过这样做,我需要在业务层异常和 api 响应之间创建映射。业务层实现不应该意识到这种异常。但是我可能需要更改抛出异常的所有位置以返回带有一些异常代码的异常,并将该异常代码映射到 api 错误代码中。
这是我能想到的解决问题的办法,但是我正在处理的代码库非常大,重构和实现这个解决方案的工作量非常大。
我想知道是否有更好的设计和更简单的方法来解决这个问题?或者任何关于此的想法都会对我有所帮助。