在Mule中使用APIKit,如果在执行流程时找不到特定资源,我需要返回404状态代码。
我可以看到三种处理方法:
抛出自定义业务异常(使用groovy脚本),即 PersonNotFoundException并使用 apikit:mapping-exception-strategy将该例外映射到' 404'
抛出现有的Mule异常 org.mule.module.apikit.exception.NotFoundException已经存在 映射到' 404'
不抛出异常并手动设置http响应和 正常流程中的状态代码。
这里最好的做法是什么?使用流量控制的例外?如果是这样,请使用Mule异常还是自定义业务异常?
答案 0 :(得分:4)
我认为这是API最佳实践和Mule最佳实践之间的奇怪组合之一。
对于通用资源,即" / users"我会使用Mule Not Found Exception(404),但对于不存在的项目资源,即" / users / jim-smith"出于可用性目的,我会使用&#34抛出自定义异常;请求的用户不存在"或者"您无权访问此用户" (状态401)无论哪种情况都可以最好地帮助开发人员使用您的API。
我认为异常策略的最大优势,而不仅仅是自己手动更改响应,它创建了一个清晰的流程,您可以轻松确定什么是成功的响应,以及什么是失败的响应。
在Mule中使用异常处理程序,您可以向用户返回统一的错误响应(使用JSON,XML等)。
但是其他人可能不同意我的意见,只是手动设置状态代码和自己的响应确实提供了最大的灵活性,但也允许不一致。